JPA의 개념
https://velog.io/@rmeos/JPA-자바가-DB와-상호작용하는-기술
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() 메서드 등은 예외처리가 필요하다.