[JPA] 객체지향 쿼리 개요

Jiwoo Kim·2020년 11월 17일
0

JPA 마스터하기

목록 보기
13/14
post-thumbnail

객체지향 쿼리

SQLJPQL
Structured Query LanguageJava Persistence Query Language
데이터 중심의 쿼리엔티티 객체 중심의 쿼리
DB 테이블 대상객체 대상

JPA 공식 지원 기능

  • JPQL
  • Native SQL
  • Criteria Query (JPQL을 편하게 작성하도록 도와주는 API)

비공식 기능

  • QueryDSL (JPQL을 편하게 작성하도록 도와주는 API)
  • 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에 의존하게 된다.

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

0개의 댓글