본 포스팅은 인프런 - 자바 ORM 표준 JPA 프로그래밍 (기본편) 을 강의를 바탕으로 공부하고 정리한 글입니다.
JPQL
JPA를 사용하면 엔티티 객체를 중심으로 개발하게 된다. 문제는 검색 쿼리이다.
- 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색
- 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능
애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요한 것이다.
검색 쿼리를 위해 실제 RDB의 테이블을 대상으로 쿼리를 날리면 특정 DB에 종속적인 설계가 된다.
따라서 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.
- JPQL은 엔티티 객체를 대상으로 쿼리를 날릴 수 있다.
- SQL 문법과 유사하며 SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원한다.
JPQL | 엔티티 객체를 대상으로 쿼리 |
SQL | 데이터베이스 테이블을 대상으로 쿼리 |
JPQL 예시
🖥 JPQL 작성
String jpql = "select m from Member as m";
List<Member> result = em.createQuery(jqpl, Member.class)
.getResultList();
🖥 위의 JPQL에 의해 변환되어 실행된 SQL
Hibernate:
/* select
m
from
Member as m */ select
member0_.id as id1_0_,
member0_.name as name2_0_
from
Member member0_
Reference
'🌱 Spring > JPA' 카테고리의 다른 글
[JPA] 연관관계 매핑(1) : 단방향 매핑 (0) | 2022.10.06 |
---|---|
[JPA] 데이터베이스 스키마 자동 생성 : DDL AUTO (0) | 2022.09.30 |
[JPA] 엔티티 매핑(2) - 기본 키 매핑 전략 (1) | 2022.09.30 |
[JPA] 엔티티 매핑(1) - 객체와 테이블, 필드와 컬럼 매핑 (0) | 2022.09.30 |
[JPA] 영속성 관리 (0) | 2022.09.29 |
[JPA] JPA 왜 사용할까? (0) | 2022.09.22 |
[JPA] 엔티티 변경 - 변경감지(Dirty Checking)와 병합(Merge) (0) | 2022.06.10 |
[JPA] 엔티티 설계시 주의점 (0) | 2022.06.04 |