목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
Case 문 select, 조건절(where), order by에서 사용 가능하다. 단순한 조건 @Test void basicCase() { List result = queryFactory .select(member.age .when(10).then("열살") .when(20).then("스무살") .otherwise("기타") ) .from(member) .fetch(); for (String s : result) { System.out.println("s = " + s); } } 결과 s = 열살 s = 스무살 s = 기타 s = 기타복잡한 조건 @Test void complexCase() { List result = queryFactory .select(new CaseBuilder() .when(m..
서브 쿼리 com.querydsl.jpa.JPAExpressions를 사용한다. 서브 쿼리 eq 사용 /* * 나이가 가장 많은 회원 조회 * */ @Test void subQuery() { QMember memberSub = new QMember("memberSub") List result = queryFactory .selectFrom(member) // member 조회 .where(member.age.eq( // member.age가 memberSub(member)중 max()값이랑 같은 조건 JPAExpressions.select(memberSub.age.max()) .from(memberSub) )) .fetch(); assertThat(result).extracting("age").conta..
조인 - 페치 조인 페치 조인은 SQL에서 제공하는 기능은 아니다. SQL조인을 활용해서 연관된 엔티티를 SQL 한번에 조회하는 기능이다. 주로 성능 최적화에 사용하는 방법이다. 페치 조인 미적용 지연로딩으로 Member, Team SQL 쿼리 각각 실행 @PersistenceUnit EntityManagerFactory emf; @Test void fetchJoinNo() { em.flush(); em.clear() // LAZY 했기 때문에 Team은 조회하지 않는다. Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1")) .fetchOne() boolean loaded = emf.getPers..
조인 - on절 ON절을 활용한 조인(JPA 2.1부터 지원) 조인 대상 필터링 연관관계 없는 엔티티 외부조인 1. 조인 대상 필터링 회원과 팀을 조인하면서, 팀 이름이 teamA인 팀만 조인, 회원은 모두 조회 /** * 예) 회원과 팀을 조인하면서, 팀 이름이 teamA인 팀만 조인, 회원은 모두 조회 * JPQL : SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'teamA' * SQL : SELECT m.*, t.* FROM Member m LEFT JOIN Team t ON m.TEAM_ID=t.id and t.name='teamA' */ @Test void join_on_filtering() { List res..
조인 - 기본 조인 기본 조인 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭(alias)으로 사용할 Q 타입을 지정하면 된다. join(조인 대상, 별칭으로 사용할 Q타입)테스트 /* * 팀 A에 소속된 모든 회원 조회 * */ @Test void join() { List result = queryFactory .selectFrom(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("username") .containsExactly("member1", "member2"); } join(), innerJoin() : 내부 조인(in..