• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

질문이 있습니다!

21.01.05 21:20 작성 조회수 159

0

조인중, 세타조인과 연관관계가 없는 엔티티 조인은 같다 라고 생각해도 되나요?

예)

select m from Member m, Team t where m.name = t.name 이라는 세타 조인과,

select m from Member m join Team t on m.name = t.name 의 연관관계가 없는 엔티티 조인은 같은 건가요 ? ?

답변 3

·

답변을 작성해보세요.

0

네 핵심은 두번째 방법을 사용하면 left join을 할 수 있습니다^^

감사합니다.

0

sjdzn119님의 프로필

sjdzn119

질문자

2021.01.07

이런! 간단하게 확인할 수 있는걸 확인 안하고 질문을 드렸네요 ㅠ_ㅠ

우선 Member 엔티티와 아무 연관없는 Test 라는 엔티티를 만들었고, select 쿼리 실행 전 Member 엔티티에

값을 하나 넣은 뒤 쿼리를 실행 시켰습니다.

         Member member = new Member();

member.setUsername("둘리");

member.setAge(10000);

        em.persist(member);

1. select m from Member m, Test t where m.username = t.name

>> 쿼리를 돌려보니 강의에서 말씀주신것과 동일하게 cross join 쿼리가 나갑니다.

2. select m from Member m left join Test t on m.username = t.name

>> left outer join 쿼리가 나갑니다.

차이점은 1번 cross join 은 Test 엔티티에 값이 없으면 쿼리 조회가 안되고,

2번 left outer join은 Test 엔티티에 값이 없어도, 조회가 됩니다.

혹시 더 중요한 부분을 놓치고 있다면 알려주세요

감사합니다.

0

안녕하세요. sjdzn119님

둘을 각각 실행해보시고 SQL 결과를 남겨주시겠어요^^?

그러면 둘의 차이를 바로 아실 수 있을거에요.

꼭 남겨주세요^^!