JPQL (Java Persistence Query Language) : 엔티티 객체를 조회하는 객체지향 쿼리다.
JPQL은 SQL을 추상화하여 특정 데이터베이스에 의존하지 않는다. 따라서, 데이터베이스 방언이 바뀌어도 상관없다.
Criteria는 JPQL을 생성하는 빌더 클래스이다.
문자열로 JPQL을 작성하면 런타임이 되어야 문법 오류를 알 수 있지만,
Criteria는 자바 코드 기반이기 때문에 안전하게 JPQL을 작성할 수 있다.
// Criteria 사용 시작
CriteriaBuilder cb = eb.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(eq).getResultList();
위의 코드는 Criteria를 이용한 예시이다. 하지만 이것이 복잡하여 QueryDSL이 등장하였다.
QueryDSL은 JPQL 빌더 역할을 한다.
이것은 오픈소스 프로젝트이다.
JPAQuery query = new JPAQuery(em);
QMember member = QMember.member;
List<Member> members = query.from(member)
.where(member.username.eq("kim")).list(member);
QMember는 Member 엔티티 클래스를 기반으로 생성한 QueryDSL 쿼리 전용 클래스이다.
'Spring' 카테고리의 다른 글
서버 템플릿 엔진 - Handlebars (0) | 2023.04.26 |
---|---|
TestContainers (0) | 2023.04.23 |
Spring MVC 동작순서 (0) | 2022.11.21 |
Front Controller 패턴 특징 (0) | 2022.11.07 |
Maven과 Gradle (0) | 2022.09.06 |