본문 바로가기
JPA

(JPA) JPA 영속성이란? 간단 요약 정리! (영속성 상태 / 기능)

by Developer RyanKim 2019. 4. 23.

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 성능개선이란? 성능개선 목록 (N+1문제/read-only/Non-Transactional..)

JPA 성능개선 목록 1. N+1 문제 개선 JPA 사용시 성능상 가장 조심해야하는 것이 N+1 문제이다. N+1 문제는 연관관계 설정이 되어있는 Entity 조회시 연관된 다른 Entity를 가져오기 위해 조회한 수 만큼 다시 SQ..

lion-king.tistory.com

 

댓글