JPA
JPA 소개 / 영속성 관리
hyokong
2025. 5. 1. 16:16
JPA
객체를 자바 컬렉션에 저장하듯이 DB에 저장
영속성 컨텍스트
Entity를 영구 저장하는 환경(EntityManager를 사용하여 저장)
- 1차 캐시
- 1차 캐시에 저장된 entity를 find() 하면 DB조회 없이 바로 반환
- 동일성(idnetity) 보장
- 같은 트랜잭션 내부에서는 같은 엔티티 반환
- 쓰기 지연
- DB 조작들을 트랜잭션 커밋 순간 한번에 수행
- 변경 감지(Dirty Checking)
- flush 시점에 엔티티 변경사항을 자동으로 UPDATE SQL 생성하여 반영
- 스냅샷 활용
- 지연로딩(lazy loading)
- 객체가 실제 사용될 때 로딩
Entity 생명주기
- 비영속(new/trasient)
- JPA에서 관리되지 않는 상태 (new로 객체만 생성)
- 영속(managed)
- 영속성 컨텍스트에서 관리되는 상태(persist(), find()..)
- 준영속(detached)
- 영속성 컨텍스트에 저장되었다가 분리된 상태(더 이상 영속성 컨텍스트가 관리하지 않는 것)
- 삭제(removed)
- 삭제된 상태
- 영속성 컨텍스트에서 바로 제거