Spring/Querydsl 5

순수 JPA와 Querydsl

동적 쿼리와 성능 최적화 조회 - Builder 먼저 회원 정보와 소속 팀 정보를 담는 DTO를 생성하고 @QueryProjection을 통해 QType 클래스를 만들어주었다. 찾고자하는 회원에 대한 조건이 여기에 담겨서 넘어올 것이다. QType의 DTO가 생성되었기 때문에 위와같이 바로 DTO로 조회를 한다. Querydsl의 BooleanBuilder를 사용해 위와 같이 조건을 설정해주고 위와 같이 Repository의 코드를 구현하였다. 회원 이름과 팀 이름이 조건과 같은, 나이는 AgeGoe

Spring/Querydsl 2021.08.30

중급 문법

1. 프로젝션과 결과 반환 1-1. 프로젝션과 결과 반환 - 기본 프로젝션 : select 대상을 지정 프로젝션 대상이 하나 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다. 둘 이상이면 튜플이나 DTO로 조회한다. 튜플 조회 "com.querydsl.core.Tuple" 리스트의 타입이 Tuple형식으로 반환된다. 데이터를 사용할 때는 get()을 사용하여 값을 꺼낸다. 1-2. 프로젝션 결과 반환 - DTO 조회 (중요!!) JPA에서 DTO를 조회할 때는 new 오퍼레이션을 사용하는데, DTO의 패키지명을 다 적어줘야해서 매우 지저분해지고 생성자 방식만 지원한다는 단점이 존재한다. Querydsl 빈 생성 - 프로퍼티 접근 - 필드 직접 접근 - 생성자 사용 먼저 프로퍼티 접근을 사용하는 방..

Spring/Querydsl 2021.06.29

기본 문법

JPQL을 사용하여 회원 이름으로 조회하기 Querydsl을 사용하여 회원 이름으로 조회하기 JPAQueryFactory에 EntityManager 객체를 넣어줌. 훨씬 더 직관성이 있고 알아보기 쉽다. 파라미터 바인딩을 해주지 않아도 알아서 처리해준다. Querydsl은 JPQL 빌더 JPQL: 문자(실행 시점 오류), Querydsl: 코드(컴파일 시점 오류) JPQL: 파라미터 바인딩 직접, Querydsl: 파라미터 바인딩 자동 처리 EntityManager, JPAQueryFactory 모두 동시성 문제가 발생하지 않게 설계가 되어 있다. 따라서 EntityManager 처럼 JPAQueryFactory도 필드 레벨에서 선언하여 사용하여도 문제없다. 스프링 프레임워크는 여러 쓰레드에서 동시에 같..

Spring/Querydsl 2021.06.18

Querydsl 설정

Querydsl을 사용하기 위해선 build.gradle에 설정을 추가해주어야한다.(start.spring.io에 없음 따로 추가해줘야함) Querydsl이 제대로 설정이 되었는지 확인해보기위해서 엔티티를 만들고 Q엔티티가 생성되는지 테스트 엔티티 작성 후 gradle창을 열어 complieQuerydsl 더블클릭하여 컴파일 실행(그냥 build하여도 자동으로 생성됨) build.gradle에 설정해놓은 build폴더의 generated/querydsl 폴더에 엔티티와 동일한 경로로 Q파일 생성 Q타입은 컴파일 시점에 자동 생성되므로 버전관리(GIT)에 포함하지 않는 것이 좋다. build 폴더는 gitignore파일로 제외시켜놓았기 때문에 Q타입은 포함하지 않는다. 생성된 QHello.java이다. Q..

Spring/Querydsl 2021.06.17
반응형