본문 바로가기

조인5

JPA - 객체지향 쿼리 언어 - QueryDSL Join, 서브쿼리 - 참조: 자바 ORM 표준 JPA 프로그래밍 - Join QueryDSL 에서 Join 은 innerJoin, leftJoin, rightJoin, fullJoin 을 지원한다. 또한 JPQL 의 on 과 fetch 기능도 사용가능하다. join 을 사용할때에는 1번째 파라미터에 조인 대상을, 2번째 파라미터에 alias 를 지정한다. 귀찮지만 Join 예제를 실행해보기 위해 Member 엔티티와 Order 엔티티가 맵핑된 데이터를 만들어주자. Member member1 = new Member(); member1.setName("Name#1"); member1.setAge(10); member1.setAddress( new Address("City#1", "Street#1", "Zipcode#1"));.. 2021. 8. 18.
JPA - 객체지향 쿼리 언어 - Criteria 집합, 정렬, 조인 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 집합 Criteria 에서 집합(group by) 과 집합의 조건(having) 을 어떻게 사용하는지 예제를 통해 알아보자. group by 를 사용해보기 위해 기존 Member 엔티티에 age 속성을 더해주고, Address 를 함께 사용한다. Embedded 타입에 equals 와 hasCode 재정의 해 주는것도 잊지말자. @Entity public class Member extends DateMarkable{ @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private int age; private String name; @Embedded private Address addres.. 2021. 8. 9.
JPA - 객체지향 쿼리 언어 - JPQL Fetch Join - 참조: 자바 ORM 표준 JPA 프로그래밍 - 페치 조인(Fetch Join) 페치 조인은 SQL 에서 이야기하는 조인의 종류를 말하는것은 아니다. 이전에 지연 로딩에 대해서 알아본적이 있는지 지연 로딩과 관련된 얘기이며 성능 최적화를 위해 제공하는 기능이다. 문법이 크게 어렵지는 않다. [ INNER | LEFT [OUTER] ] JOIN FETCH 와 같이 기존 Join 문법 뒤에 FETCH 를 붙여주기만 하면 된다. - 엔티티 페치 조인 앞에서 User#1 과 주문 2 건을 사용하던 예제를 계속 사용해보자. Order 에서 Member 엔티티 @ManyToOne 맵핑시 FetchType 은 Lazy 라고 가정한다. 이전에 INNER JOIN 을 이용하여 Order 와 Member 엔티티를 Joi.. 2021. 7. 31.
JPA - 객체지향 쿼리 언어 - JPQL Join - 참조: 자바 ORM 표준 JPA 프로그래밍 - 내부 조인(INNER JOIN) JPQL 조인은 SQL 조인과 기능은 같지만 문법이 약간 다르다. Join 예제를 실행해보기 위해 실전예제에서 사용한 1 : N 관계인 Member 와 Order 엔티티를 사용해보자. @Entity public class Member extends DateMarkable{ @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List orders = new ArrayList(); ......... 2021. 7. 31.
JPA - 고급맵핑 - 조인 테이블 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 조인 테이블 DB 의 테이블 연관관계를 설계하는 방법에는 컬럼을 이용한 조인과 조인 테이블을 사용하는법 2 가지가 존재한다. 위 다이어그램에서 MEMBER 테이블에서 LOCKER 와 연관관계를 맺을 때 LOCKER_ID 조인 컬럼을 이용한다. 만약 회원이 5 명 있을 때 2 명에게만 사물함이 할당되었고 나머지 회원에게는 사물함이 아직 할당되지 않았다면 해당 회원의 LOCKER_ID 컬럼에는 NULL 이 할당되어 있을것이다. FK 에 NULL 이 있다면 INNER JOIN 사용 시 MEMBER 를 인식할 수 없으므로 MEMBER 를 기준으로 사물함 존재유무를 나타내야 한다면 OUTER JOIN 을 이용해야 한다. 위 다이어그램은 MEMBER_LOCKER 조.. 2021. 7. 12.