Framework/Spring

[Spring] JPA의 Persistence

검은 까마귀 2022. 4. 11. 16:48

JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트이다.

 

영속성 컨텍스트 : 엔티티를 영구 저장하는 환경

 

JPA에서 persist() 메소드는 엔티티 매니저를 사용해서 영속성 컨텍스트에 저장

 

영속성 컨텍스트는 엔티티 매니저를 생성할때 하나 만들어지게 된다

 

앤티티 매니저는 영속성 컨텍스트를 생성 및 관리하는 역할을 하게된다.

 

Entity는 4가지 State를 갖고 있다.

  1. 비영속(new/transient)
    • 엔티티 객체를 생성 
    • DB와 연관되어있지 않음
  2. 영속(managed)
    • 엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트에 저장
    • 영속성 컨텍스트에서 관리되는 엔티티를 영속 상태라고 부름
  3. 준영속(detached)
    • 엔티티를 영속성 컨텍스트가 관리하지 않는 상태
  4. 삭제(removed)
    • 영속성 컨텍스트와 데이터베이스에서 삭제된 상태

영속성 상태의 특징

  • 영속성 컨텍스트와 식별자 값
    • 앤티티를 식별자 값으로 구분한다 -> 영속 상태는 식별자 값을 항상 같고 있어야 한다
  • 영속성 컨텍스트와 데이터베이스 저장
    • JPA는 보통 트랙젝션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 데이터를 반영하게 되는데 이를 flush라고 한다
  • 영속성 컨텍스트에 장점
    1. 1차 캐시보장
    2. 동일성 보장
    3. 트랙잭션을 지원하는 쓰기 delay
    4. 변경 감지
    5. 지연 로딩

 

 

 

 

 

반응형

'Framework > Spring' 카테고리의 다른 글

[Spring] Open API 활용하기  (0) 2023.12.15
[Spring] Rest Doc 활용하기  (0) 2023.12.13
[Spring] Spring MVC 패턴의 LifeCycle  (0) 2023.10.26
[Spring] Gradle 1편  (0) 2022.04.04
[Spring] JPA-ORM  (0) 2022.03.10