JPA(Java Persistence API)의 핵심
- 객체와 관계형 데이터베이스 매핑(Object Relational Mapping:ORM)
- 영속성 컨텍스트
영속성 컨텍스트: 엔티티를 영구 저장하는 환경
@Entity: JPA가 관리할 객체
@Id:데이터베이스 PK와 매핑
EntityManager.persist(entity);
🔹 엔티티 매니저 팩토리와 엔티티 매니저
- 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에 공유
- 엔티티 매니저는 쓰레드간에 공유하면 안된다. 사용하고 버리기
- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행
🔹 엔티티의 생명주기
- 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
- 영속(managed): 영속성 컨텍스트에 관리되는 상태
- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태
- 삭제(removed): 삭제된 상태
🔹 영속성 컨텍스트의 이점
- 1차 캐시
- 동일성(identity) 보장
- 트랙잭션을 지원하는 쓰기 지연(transactional write-behind)
- 변경 감지(Dirty Checking)
- 지연 로딩(Lazy Loading)