JPQL과 지원 도구

JooHeon·2021년 11월 16일
0
post-custom-banner

🖊 JPQL(Java Persistence Query Language)

  • JPQL은 객체 지향 쿼리언어로 JPA Entity를 대상으로 작동한다.
  • 그러므로 SQL을 추상화해서 특정 베이스 SQL에 의존하지 않는다.

🖊 JPQL 문제점

em.createQuery("select m from Member as m where m.username like '%jeong%'",
		Member.class
).getResultList();
  • 위의 쿼리 문장처럼 동적으로 쿼리를 수정하는게 힘들다.

🖊 Criteria

  • 자바에서 제공하는 JPQL을 지원하는 빌더 클래스다.
//criteria 사용 준비
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Member> query = cb.createQuery(Member.class);

//루트 클래스 (조회 시작 클래스)
Root<Member> m = query.from(Member.class);

//쿼리 생성
CriteriaQuery<Member> cq = query.select(m).where(cb.equal(m.get("username"), "kim"));
List<Member> resultList = em.createQuery(cq).getResultList();
  • 자바 코드로 쿼리문을 작성할 수 있다.
  • 동적 쿼리를 비교적 편하게 작성할 수 있다.
  • 유지보수 및 작성하기가 너무 복잡해서 쓰기가 힘들다.

🖊 QueryDSL

  • JPQL을 지원하는 오픈소스 프레임워크
TODO : 예제 코드 작성
  • JQPL 빌더 역할
  • 단순하고 쉽다.
  • 동적쿼리 작성 편리하다.
  • 컴파일 시점에 문법 오류를 찾을 수 있다.
post-custom-banner

0개의 댓글