JPA의 성능 최적화 기능 - ORM 자바 표준 명세 → hibernate 구현체 ..
- 1차 캐시와 동일성(identity) 보장
- 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
- 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
- 커밋하는 순간 데이터베이스에 INSERT SQL을 모아서 보낸다
- 비즈니스 로직 수행 동안 DB 로우 락이 걸리지 않는다
- 트랜잭션 커밋 시 UPDATE, DELETE SQL 실행하고, 바로 커밋
- 지연 로딩(Lazy Loading)
JPQL
JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
JPQL은 엔티티 객체를 대상으로 쿼리
영속성 컨텍스트
엔티티를 영구 저장하는 환경이라는 뜻
EntityManager.persist(entity);
엔티티 매니저(엔티티 매니저 팩토리가 관리)와 영속성 컨텍스트가 N:1
엔티티의 생명주기

준영속 : 엔티티를 영속성 컨테긋트에서 분리
영속성 컨텍스트의 이점
- 1차 캐시
- 동일성 보장
- 1차 캐시로 반복 가능한 읽기(REPEATABLE READ) 등급의 트랜잭션 격리 수준을 데이터베이스가 아닌 애플리케이션 차원에서 제공