Spring/자바 ORM 표준 JPA프로그래밍

객체지향 쿼리언어 소개 (JPQL / QueryDSL)

hyun-1200 2022. 5. 19. 14:51

JPA는 다양한 쿼리 방법을 지원한다

  • JPA
  • JPA Criteria : 너무 복잡하여 QueryDSL 사용권장. 
  • QueryDSL
  • 네이티브 SQL
  • JDBC API 직접 사용, MyBatis, SprintJdbc Template 함께 사용

 

 JPQL 

  • JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다. 
  • JPQL은 검색 할때 테이블이 아닌 엔티티 객체를 대상으로 검색한다.
  • SQL은 데이터베이스 테이블을 대상으로 검색. 
  • JPQL을 한마디로 정의하면 객체지향 SQL ( 객체지향 쿼리 언어 )
  • JPQL은 SQL을 추상화해서 특정베이스 SQL에 의존하지 않는다.  

JPQL을 위처럼 사용하면, 아래와 같이 실행된 SQL을 볼 수 있다 ! 😃 


 

 Criteria

  • 문자가 아닌 자바코드로 JPQL을 작성할수 있다.
  • JPA 공식 기능이다.
  • 하지만, 너무 복잡하고 실용성이 없어 Criteria 대신에 QueryDSL 사용을 권장한다. 

 


 QueryDSL

  • 문자가 아닌 자바코드로 JPQL을 작성할 수 있음
  • 컴파일 시점에 문법 오류를 찾을 수 있음
  • 단순하고 쉬워서, 실무 사용에 권장한다.