Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

지우쓰 개발일기

[JPA] 객체지향 쿼리 개요 본문

Spring Boot/JPA

[JPA] 객체지향 쿼리 개요

jiwoo-kimm 2020. 9. 15. 21:50

본 포스팅은 자바 ORM 표준 JPA 프로그래밍 (김영한 저)을 읽고 정리한 내용입니다.

 

자바 ORM 표준 JPA 프로그래밍

에이콘 오픈 소스 프로그래밍 시리즈. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다.

www.aladin.co.kr


객체지향 쿼리


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