Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

지우쓰 개발일기

[JPA] Persistence Context 본문

Spring Boot/JPA

[JPA] Persistence Context

jiwoo-kimm 2020. 9. 9. 03:02

본 포스팅은 자바 ORM 표준 JPA 프로그래밍 (김영한 저)을 읽고 정리한 내용입니다.

 

자바 ORM 표준 JPA 프로그래밍

에이콘 오픈 소스 프로그래밍 시리즈. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다.

www.aladin.co.kr

 


Persistence Context

어플리케이션과 DB 사이에서 객체(엔티티)를 저장하는 가상의 DB와 같은 환경
  • 식별자 값(@Id)에 따라 식별된다.

  • 1차 캐시, 동일성 보장, 변경 감지, 트랜잭션을 지원하는 쓰기 지연, 지연 로딩의 장점

 

엔티티의 생명주기

 

  • 비영속(New/Transient): Persistence Context와 전혀 관계가 없는 상태

  • 영속(Managed)

    • Persistence Context에 저장된 상태

    • Persistence Context에 의해 관리된다는 뜻

  • 준영속(Detached)

    • Persistence Context에 저장되었다가 분리된 상태

    • em.detach(), em.close(), em.clear()
    • 개발자가 직접 준영속 상태로 만드는 드물고, 보통 Persistence Context가 종료될 때 준영속 상태가 된다
  • 삭제(Removed)

    • Persistence Context와 DB에서 삭제된 상태

    • 삭제된 엔티티는 Garbage Collector가 처리

 

Merge

비영속, 준영속 엔티티를 영속 상태로 만드는 것
  • Persistence Context에서 @Id 값으로 엔티티 검색 → 없으면 DB에서도 검색

  • 엔티티 있으면(준영속) 불러서 병합

  • 엔티티 없으면(비영속) 새로 생성해서 병합

 

Flush

Persistence Context의 변경 내용을 DB에 동기화하는 것
  • 작업 방식

    1. 변경 감지 작동해서 모든 엔티티를 스냅샷과 비교

    2. 변경된 엔티티에 대해 수정 쿼리 작성하고 지연 SQL 저장소에 등록

    3. 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송

  • 호출 방법

    • em.flush(): 거의 사용하지 않음

    • tx.commit()

    • JPQL 쿼리 실행

 

 

 

'Spring Boot > JPA' 카테고리의 다른 글

[JPA] 연관관계 Mapping (2)  (0) 2020.09.12
[JPA] 연관관계 Mapping (1)  (0) 2020.09.10
[JPA] JPQL 개요  (0) 2020.09.09
[JPA] CRUD 기본  (0) 2020.09.09
[JPA] persistence.xml 기본 설정  (0) 2020.09.08
Comments