지우쓰 개발일기
[JPA] 객체지향 쿼리 개요 본문
본 포스팅은 자바 ORM 표준 JPA 프로그래밍 (김영한 저)을 읽고 정리한 내용입니다.
객체지향 쿼리
SQL | JPQL |
Structured Query Language | Java Persistence Query Language |
데이터 중심의 쿼리 | 엔티티 객체 중심의 쿼리 |
DB 테이블 대상 | 객체 대상 |
JPA 공식 지원 기능
-
JPQL
-
Native SQL
-
Criteria Query
-
JPQL을 편하게 작성하도록 도와주는 API
-
Builder Class 모음
-
비공식 기능
-
QueryDSL
-
JPQL을 편하게 작성하도록 도와주는 API
-
Builder Class 모음
-
비표준 오픈소스 프레임워크
-
-
JDBC
-
MyBatis
-
Mapper 프레임워크
-
JPQL
-
SQL을 추상화해서 특정 DB에 의존하지 않는다.
-
SQL보다 간결하다.
-
실행할 JPQL, 리턴할 엔티티 클래스 타입을 지정
-
자동으로 SQL로 변환하여 DB를 조회
-
지정된 엔티티를 생성하여 리턴
Criteria
-
JPQL을 생성하는 Builder Class
-
문자가 아닌 프로그래밍 코드로 JPQL을 작성할 수 있다.
-
컴파일 시점에 오류를 발견할 수 있다(단순 오타 등).
-
IDE를 사용하면 코드 자동완성을 지원한다.
-
동적 쿼리를 작성하기 편하다.
- 하지만, Criteria로 작성한 코드는 복잡하고 장황하여 불편하다는 큰 단점이 있다.
QueryDSL
-
Criteria와 같은 JPQL Builder Class
-
코드 기반이면서도 단순하고 쉽다.
-
쿼리 전용 클래스를 생성해야 한다.
Native SQL
-
JPQL이 지원하지 않는 SQL만의 기능을 사용할 때 필요
-
특정 DB에 의존하게 된다.
'Spring Boot > JPA' 카테고리의 다른 글
[JPA] JPQL (2) (0) | 2020.09.20 |
---|---|
[JPA] JPQL (1) (0) | 2020.09.17 |
[JPA] 값 타입 (0) | 2020.09.13 |
[JPA] 영속성 전이, 고아 객체 (0) | 2020.09.13 |
[JPA] Proxy, Eager Loading, Lazy Loading (0) | 2020.09.13 |
Comments