JAVA/SPRING

QueryDSL , Criteria , Native Query

girin_dev 2022. 5. 9. 23:50
728x90
반응형

 

 

간단한 경우, 

와 같은 방법으로도 처리가 된다. 

 

 

 

 

아니라면, 

 

굳이 @Query로 다시 쿼리 쓴다 - > 오타 , 띄어쓰기 등에 의해 에러를 내뱉을 확률이 높아짐. 

 

 

따라서 Criteria  또는 open source 라이브러리인 QueryDSL을 쓴다면 더 간편하게 JPA를 쓸 수 있다.

 

 

Criteria는 JPQL을 생성하는 빌더 클래스에 해당한다.

프로그래밍 코드로 JPQL을 작성해준다는 장점이 있다. 

CriteriaBuilder cb = em.getCriterBuilder();

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.create(cq).getResultList();

 

 

 

QueryDSL 도 JPQL 빌더 역할을 한다.  ( JPA 표준 X, 오픈소스 프로젝트에 해당함)

JPAQuery query = new JPAQuery(em);
QMember member = QMember.member;

// 쿼리, 결과조회
List<Member> members = query.from(member)
                            .where(member.username.eq("kim"))
                            .list(member);

 

Criteria 보다는 더 간편해보인다. 

 

320x100
반응형