PSD( Private-Self-Development )

JPA 의 쿼리 작성 라이브러리 본문

Backend/JPA

JPA 의 쿼리 작성 라이브러리

chjysm 2022. 10. 20. 14:01

JPA의 지원 쿼리 


JPQL

  • 테이블이 아닌 객체 지향 쿼리
  • SQL을 추상화하여 특적 DB SQL 의존도 x
  • 동적 쿼리 사용 부적합
List<Member> memberList = em.createQuery( "select m From Member m Where m.name like '%hello%' ", Member.class ).getResultList();

 

JPA Criteria

  • 동적 쿼리 지원
  • jpql 의 함수 버전
  • 단, 가시성이 떨어지고 복잡해진다. => 유지보수성 저하
  • 쿼리가 잘못 된 경우, 컴파일 오류가 나기 때문에 좋다.
//Criteria 사용 준비
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Member> query = cb.createQuery(Member.class); 
Root<Member> m = query.from(Member.class); 
query.select(m).where(cb.equal(m.get("username"), “kim”));
List<Member> resultList = em.createQuery(cq).getResultList();

 

QueryDSL

  • JPA Criteria 의 상위 호환
  • 유지 보수성 의 증가
  • 이거 쓰자..

 

네이티브 sql

  • 특정 DB에 의존하는 쿼리 혹은 기능 사용 시 사용
String sql = “SELECT ID, AGE, TEAM_ID, NAME FROM MEMBER WHERE NAME = ‘kim’;
List<Member> resultList = em.createNativeQuery(sql, Member.class).getResultList();

 

JDBC API

  • 영속성 컨텍스트를 적절한 시점에 강제로 플러시 필요

 


왜 쿼리 작성이 필요 한가?

  • 조회 조건
  • 엔티티 객체를 대상으로 조회를 지원하는게 좋다.
  • jpa 특성상 대부분의 DB 종류에 적용될 쿼리가 필요.

 

 


참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

'Backend > JPA' 카테고리의 다른 글

OSIV( Open Session In View ) 성능 최적화  (0) 2022.12.12
JPA 조회 성능 최적화  (0) 2022.12.01
JPA 값 타입  (0) 2022.10.14
JPA 의 프록시, 지연 로딩, 즉시 로딩  (0) 2022.10.12
JPA 의 상속  (0) 2022.10.11