JPQL, 객체지향 쿼리언어

35 Isaiah·2025년 6월 20일

스프링부트

목록 보기
2/12
post-thumbnail

JPA의 개념
https://velog.io/@rmeos/JPA-자바가-DB와-상호작용하는-기술

JPQL

Java Persistence Query Language
엔티티 객체를 대상으로 하는 객체지향 쿼리언어로 자바에서 쿼리메서드를 조회하는 방법의 하나다.

// JPQL 기본 구조
SELECT [별칭] FROM [엔티티명] [별칭] WHERE [조건]

// 실제 예시
"SELECT b FROM Board b WHERE b.id = :id"
//  ↑      ↑     ↑       ↑       ↑      ↑
// SELECT 별칭  엔티티명  별칭   필드명  파라미터

네이티브 구문과 다른 점은 별칭을 사용한다는 점이다.

// SQL (테이블 중심)
SELECT * FROM board_tb WHERE username = 'ssar'

// JPQL (엔티티 중심)
SELECT b FROM Board b WHERE b.username = 'ssar'

핵심 차이점:
- SQL: 테이블명(board_tb), 컬럼명 사용
- JPQL: 엔티티명(Board), 필드명 사용

😎 기본키로 조회할때는 엔티티매니저의 메서드 ex) find() 등을 사용하는 것이 성능이 좋은데 복잡한 구문은 JPQL로 하는게 낫다고 한다.

💀 단점
1차캐시를 우회하여 항상 DB 접근하여 코드가 복잡해질 수 있다. getSingleRuselt() 메서드 등은 예외처리가 필요하다.

profile
개발자 지망생

0개의 댓글