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
'JPA' 카테고리의 다른 글
(JPA) JPA 성능개선이란? 성능개선 적용기 (fetch join/BatchSize) (3) | 2020.03.09 |
---|---|
(JPA) JPA 성능개선이란? 성능개선 목록 (N+1문제/read-only/Non-Transactional..) (0) | 2020.03.07 |
Spring JPA의 사실과 오해 - NHN FORWARD >> (0) | 2019.11.27 |
(JPA) JPA란? JPA는 어떻게 구현되어있을까? (0) | 2019.04.15 |
(Mybatis/JPA) Mybatis VS JPA 장단점은 무엇일까? (0) | 2019.02.27 |
댓글