PSD( Private-Self-Development )

JPA의 영속성 컨텍스트 본문

Backend/JPA

JPA의 영속성 컨텍스트

chjysm 2022. 10. 6. 11:25

영속성 콘텍스트?

엔티티를 영구 저장하는 환경 

 

EntitiyManager.persist( entity ); 

사실은 db에 저장하는 동작이 아닌

엔티티를 영속성 콘테스트에 영속하는 것


엔티티의 상태

  • 비영속
    ex) 객체 생성 후 데이터 세팅만 함
    = 영속성 콘텍스트에 저장은 하지 않았다.
  • 영속
    ex) EntitiyManager.persist(  entity )
    = DB에 저장한 것이 아닌 영속성 콘텍스트에 저장한 것
    트랜젝션. commit 시 에만 DB에 저장한다.

  • 준영속
    ex) EntitiyManager.detach( entity )
    = 영속성 콘텍스트에서 해당 엔티티를 분리

  • 삭제
    EntitiyManager.remove( entity )
    = 영속성 컨텍스트에 해당 엔티티 삭제 sql을 남긴다.

 

GIT의 로컬 저장소 개념과 비슷하다.

영속성 콘텍스트의 장점

  • 캐시( 영속성 컨택스트 ) 사용 가능 
  • 영속 엔티티 간의 동일성을 보장한다.
    ex) entity == entity는
  • 쓰기 지연 가능
    영속 콘텍스트 안에 쓰기 지연 sql 저장소를 운영한다!
  • 변경 감지 기능 
    새로 추가하거나 조회해 올 때 자동적으로 해당 객체의 스냅숏을 찍어 놓고
    비교한다
    .
  • 지연 로딩 

준영속 상태로 만드는 방법 

// 준영속 상태로 전환 
EntitiyManager.detach ( entity )

// 영속성 콘텍스트를 완전히 초기화 
EntitiyManager.clear()

// 영속성 컨텍스트를 종료
EntitiyManager.close()

 


참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

'Backend > JPA' 카테고리의 다른 글

JPA 의 프록시, 지연 로딩, 즉시 로딩  (0) 2022.10.12
JPA 의 상속  (0) 2022.10.11
JPA의 DB 매핑  (0) 2022.10.06
JPA 사용 설정 및 사용  (0) 2022.10.05
JPA 란?  (0) 2022.09.28