조인
Last updated
Last updated
SQL 조인과 비슷하지만 차이가 있다면 객체(엔티티) 중심으로 쿼리가 나간다!
조인을 할 땐 묵시적 조인이 아니라 명시적으로 해야한다!!! 최대한 SQL 조인 쿼리문과 비슷하게 작성하는 것이 좋다! 조인 쿼리가 성능에 영향을 주기 때문에 튜닝 요소인 점을 기억하자!
아래 내용은 SQL 기초이기 때문에 SQL 잘 모른다면 찾아서 공부해야한다^^
내부 조인 : (INNER) JOIN SELECT m FROM Member m [INNER] JOIN m.team t Member는 있고 Team이 없으면 데이터 안 나옴.
외부 조인 : LEFT (OUTER) JOIN SELECT m FROM Member m LEFT [OUTER] JOIN m.team t Member는 있고 Team이 없어도 Team데이터 null로 되고 Member와 조인 가능.
세타 조인 select count(m) from Member m, Team t where m.username= t.name 아무런 연관관계가 없을 때. Member와 Team 모두 from에서 select 절에 넣는다. Member X Team cross join이라고 나온다!
주의 사항‼️❣️
Member와 Team은 다대일 관계이기 때문에 Member 클래스 내에서 @ManyToOne으로 매핑되어있다. 디폴트 fetch 타입은 EAGER이므로 Member가 조회될 때 Team도 함께 조회되버리기 때문에 LAZY로 변경해주어야한다!!!
ON : Join할 때 조건. 조인 대상 필터링. ex) 회원과 팀을 조인하면서 팀 이름이 A인 팀만 조인.
JPQL
SQL PK와 FK 조인
연관관계 없는 엔티티 외부 조인 ex) 회원의 이름과 팀의 이름이 같은 대상 외부 조인
JPQL
SQL PK와 FK 조인