본문 바로가기

개발중/Java Persistence API (JPA)

Criteria API 에 대해 알아보기

728x90
반응형

- Criteria 란 ?

  • Criteria 는 JPQL 의 작성을 도와주는 빌더 클래스이다. 문자열로 JPQL 을 작성하면 런타임이 되어야 문법 오류를 알 수 있지만 Criteria 는 자바 코드 기반이기 때문에 안전하게 JPQL 을 작성할 수 있다.
  • 하지만 코드가 복잡해서 직관적으로 이해하기 힘들다는 의견도 있다. 대부분의 내용이 JPQL 과 중복되므로 사용법위주로 살펴보자.

- Criteria 의 장점

  • 문자가 아닌 query,select(m).shere(...) 처럼 프로그래밍 코드로 JPQL 을 사용할 수 있다.
  • 컴파일 시점에 오류를 발견할 수 있다.
  • IDE 를 사용하면 코드 자동 완성을 지원한다.
  • 동적 쿼리를 작성하기 편하다.

- Criteria 의 단점

  • 이것만 보면 Criteria가 가진 장점이 많지만 모든 장점을 상쇄할 정도로 복잡하고 장황합니다.
  • 코드가 길어질수록 사용하기 불편하다.
  • 가독성이 떨어진다.

- Criteria 사용법

 

  • Criteria 쿼리 빌더
CriteriaBuilder cb = em.getCriteriaBuilder();

 

  • Criteria 쿼리 빌더
CriteriaBuilder cb = em.getCriteriaBuilder();

 

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

 

  • FROM 절
Root<Member> m = cq.from(Member.class);

 

  • SELECT 절
cq.select(m);

 

  • 조회
TypedQuery<Member> query = em.createQuery(cq);
List<Member> members = query.getResultList();

 


 

728x90
반응형