(JPA) JPA 영속성이란? 간단 요약 정리! (영속성 상태 / 기능)
JPA 영속성
1. 영속성 컨텍스트 : Entity가 영구적으로 저장되는 환경 (논리적인 개념)
2. Entity Manager : Entity를 영속성 컨텍스트에 등록하거나 삭제 등의 기능을 담당
3. Entity의 상태
- 1. 비영속 : Entity가 영속성 컨텍스트에 등록되어 있지 않음
- 2. 영속 : Entity가 영속성 컨텍스트에 등록되어 있음. (기능을 제공받을 수 있음)
- 3. 준영속 : Entity가 영속 상태에서 해제되었음 ( 하지만 영속성 컨텍스트에 식별정보는 남아있다 -> 다시 영속상태로 되돌릴 수 있음)
- 4. 삭제 : Entity가 영속성 컨텍스트에서 아예 삭제되었음.
4. 제공받을 수 있는 기능
- 1. 1차 캐싱 지원 : Entity의 조회가 필요한 상황에서 영속성 컨텍스트에 등록되어있는 Entity는 DB와 통신 없이 바로 제공받을 수 있다.
- 2. 트랜잭션 지원 : Entity의 추가, 수정, 삭제 등의 동작이 일어났을 때, 그때마다 DB와 통신하는 것이 아니라 그 동작에 해당하는 쿼리 문을 만들어 쿼리문 저장소에 저장해놓는다. 후에 flush() (commit 기능 메소드) 가 일어나게 되면 저장해놓은 쿼리문들을 DB에 적용한다.
- 3. 상태변화감지 : Entity의 정보 변화가 일어나면 자동으로 감지하여 해당하는 쿼리문을 작성해서 쿼리문 저장소에 저장한다.
마찬가지로 이 쿼리도 flush() 시점에 적용된다.
- 4. 지연로딩 지원 : 필요한 객체의 정보만을 조회할 수 있도록 지원한다.
예를 들어 사람 객체와 눈 객체가 관계를 맺고있을 때 사람객체 를 조회한 경우 사람 객체의 정보만 조회하고 눈 객체는 프록시 객체(가짜)를 사용하여 제공한다. 후에 눈 객체를 조회하면 그때 눈 객체의 정보를 가져온다.
관련글: https://lion-king.tistory.com/52?category=865302