728x90
JPQL

- 문제점 : jpql은 문자열이기 때문에 중간에 오류가 발생하여도 런타임에 잡을 수밖에 없다.
QueryDsl


- QueryDsl로 작성하면 컴파일 시점에 문법 오류를 발견할 수 있다.
- EntityManager로 JPAQueryFactory 생성
- Querydsl은 JPQL 빌더
- JPQL: 문자(실행 시점 오류), Querydsl: 코드(컴파일 시점 오류)
- JPQL: 파라미터 바인딩 직접, Querydsl: 파라미터 바인딩 자동 처리
JPAQueryFactory를 필드로 제공하면 동시성 문제는 어떻게 될까?
동시성 문제는 JPAQueryFactory를 생성할 때 제공하는 EntityManager(em)에 달려있다. 스프링 프레임워크는 여러 스레드에서 동시에 같은 EntityManager에 접근해도, 트랜잭션마다 별도의 영속성 컨텍스트를 제공하기 때문에, 동시성 문제는 걱정하지 않아도 된다.
Q 클래스 인스턴스를 사용하는 2가지 방법
QMember qMember = new QMember("m"); //별칭 직접 지정
QMember qMember = QMember.member; //기본 인스턴스 사용



- Jpql에 실행되는 쿼리를 보고 싶다면, application.yml를 수정하면 된다.
- jpql에서의 Alias를 바꾸고 싶다면 new QMember에서의 이름을 바꾸어 주면 된다(static import 해서 사용하게 된다면 해당 이름이 기본적으로 클래스명 1 이렇게 되기 때문에 현재는 member1이 된 것이다)
728x90
'실전! Querydsl' 카테고리의 다른 글
| Ch02. 기본 문법 - 정렬, 페이징, 집합 (0) | 2021.12.30 |
|---|---|
| Ch02. 기본 문법 - 검색 조건 쿼리, 결과 조회 (0) | 2021.12.30 |
| Ch01. 프로젝트 환경 설정 - 예제 도메인 모델과 동작확인 (0) | 2021.12.29 |
| Ch01. 프로젝트 환경 설정 - H2 데이터베이스 설치, 스프링 부트 설정(JPA, DB) (0) | 2021.12.29 |
| Ch01. 프로젝트 환경 설정 - 라이브러리 살펴보기 (0) | 2021.12.29 |