Search
Duplicate

실무 활용 - 순수 JPA와 Querydsl

순수 JPA 리포지토리와 Querydsl

순수 JPA 리포지토리

Code

순수 JPA 테스트코드

Code

Querydsl사용

순수 JPA 리포지토리 - Querydsl 추가

Code

Querydsl 테스트코드 추가

Code

JPAQueryFactory 스프링 빈 등록

JPAQueryFactory 를 스프링 빈으로 등록해서 주입받아 사용해도 된다.
@Bean JPAQueryFactory jpaQueryFactory(EntityManager em){ return new JPAQUeryFactory(em); }
Java
복사
참고: 동시성 문제는 걱정하지 않아도 된다. 여기서 스프링이 주입해주는 엔티티매니저(em)는 실제 동작 시점에 진짜 엔티티 매니저를 찾아주는 프록시용 가짜 엔티티 매니저이다. 이 가자 엔티티 매니저는 실제 사용 시점에 트랜잭션 단위로 실제 엔티티 매니저(영속성 컨텍스트)를 할당해준다.

동적 쿼리와 성능 최적화 조회 - Builder 사용

MemberTeamDto - 조회 최적화용 DTO 추가

Code
참고: 위 코드처럼 @QueryProjection 을 사용하면 DTO가 Querydsl을 의존하게 되는데, 이게 싫다면 Projection.bean(), fields(), constructor()를 사용하면 된다.

Condition DTO를 이용해서 검색을 구현해보도록 하자.

MemberSearchCondition

Code

Builder를 사용한 예제 - searchByBuilder 메서드 작성

Code

Builder를 사용한 예제 - 테스트 코드 작성

Code

동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용

Where 절에 파라미터를 사용한 예제

Code