제목이 너무 길다.
나도 간결하게 글을 적고 싶다.
내 글솜씨가 좋지 않아 그러니 그점 양해 바란다.
연관관계가 없어도 조인이 가능하다고 한다. jpa에서 말이다.
원래는 jpa 버전이 낮을때는 불가능 했다고 함.
querydsl을 공부 중이다.
키워드를 가지고 있다가 다시 찾아보면 된다고 한다
김영한님의 설명은 간결하고 펙트만 전달해서 좋다. 그래서 자주 듣게 된다.
벌써 2번째 정주행인데 아주 잘 샀다 라는 생각이 든다.
집에서 고맙다는 전화가 온다. 고마운 짓을 한적이 없는데... 생각해보니 생활비를 붙여준것 때문에 그런듯 보인다. 그러면서 여러내용을 주고 받았다.
갑자기 글을 쓰다가 어만 내용이 나오는 것은 내가 콘텍스트 스위칭이 자주 일어나고 있음을 이해해 주기 바란다. 글에 주제로 다시 돌아가면 다행인 것이고 영원히 엉뚱한 소리만 한다면 그건 잘못된 것이니 너무 좌절하지 말고 끝까지 읽어주길 바란다.
나또한 좋은 내용을 주기위해서 노력함을 약속 드린다.
member, team 과 연관관계가 되어 있는경우 페치전략이 lazy로 되어 있지 않으면, 조회시 팀에 있는 테이블과 같이 조인해서 가져오는 참사를 겪는데... 그래서 lazy로 무조건 다 발라고 한다. 근데 진짜 팀이 필요할 경우가 생기는데 이럴때 쿼리에다 fetchjoin이라는 문법을 사용해서 처리가 가능하다고 한다.
em.flush();
em.clear();
Member findMember = queryFactory
.selectFrom(member)
.join(member.team, team).fetchJoin() // 연관된 팀을 한번에 가져온다.
.where(member.username.eq("member1"))
.fetchOne();
boolean loaded = emf.getPersistenceUnitUtil().isLoaded(findMember.getTeam());
assertThat(loaded).as("패치 조인 미적용").isTrue();
QMember ms = new QMember("memberSub");
List<Member> result = queryFactory
.selectFrom(member)
.where(member.age.in(
select(ms.age)
.from(ms)
.where(ms.age.gt(10))
))
.fetch();
assertThat(result).extracting("age")
.containsExactly(20, 30, 40);