JPA - Criteria

Growing_HJ·2024년 8월 6일

JPA

목록 보기
15/15

Criteria 쿼리

  • JPQL 을 자바 코드로 작성하도록 도와주는 빌더 클래스 API 임.

장점

문자가 아닌 코드로 JQPL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고
문자 기반의 JPQL 보다 동적 쿼리를 안전하게 생성할 수 있다.

단점

코드가 복잡하고 장황해서 직관적으로 이해가 힘들다는 단점도 존재함.

// JPQL 의 문법
select m from Member m 

CriteriaBuilder cb = em.getCriteriaBuilder(); // cireteria 쿼리 빌더 

//Criteria 생성, 반환타입 지정
CriteriaQuery<Member> cq = cb.createQuery(Member.class);

Root<Member> m = cq.from(Member.class);
cq.select(m);

TypedQuery<Member> query = em.creteQuery(cq);
List<Member> members = query.getResultList();

-> Criteria 쿼리를 생성하려면 먼저 Criteria 빌더를 얻어야 한다. Criteria 빌더는 Entity Manager 나 Entity Manager Factory 에서 얻을 수 있다.
-> Criteria 쿼리 빌더에서 Criteria 쿼리를 생성한다. 이때 반환 타입을 지정할 수 있다.
-> From 절을 생성한다. 반환된 값 m 은 Criteria 에서 사용하는 특별한 별칭으로, m을 조회의 시작점이라는 의미로 쿼리 루트 (Root) 라 한다.
-> Select 절을 생성한다.

대충햇다고 반박하면 물어버린다

0개의 댓글