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을 작성할 수 있음
- 컴파일 시점에 문법 오류를 찾을 수 있음
- 단순하고 쉬워서, 실무 사용에 권장한다.
'Spring > 자바 ORM 표준 JPA프로그래밍' 카테고리의 다른 글
JPQL 기본 문법과 기능 (0) | 2022.05.19 |
---|---|
값 타입 ( 기본값, 임베디드 타입 @Embedded, 값 타입 컬렉션@CollectionTable ) (0) | 2022.05.12 |
프록시와 연관계/ 즉시로딩: EAGER / 지연로딩: LAZY / 영속성전이:cascade/ 고아객체: orphanRemoval (0) | 2022.05.11 |
고급매핑 : 상속관계 매핑 /@MappedSuperclass (0) | 2022.05.10 |
다양한 연관관계 매핑 (0) | 2022.05.08 |