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