내일배움캠프/TIL

2024 08 19 TIL : 영속성 컨텍스트

동성만능크리너 2024. 8. 20. 16:12

JPA가 제공하는 기능은 크게 

(엔티티와 테이블)을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 볼 수 있다. 

여기서 매핑한 엔티티를 실제 사용하는 부분이 엔티티 매니저이다. 

 

엔티티 매니저 : 엔티티를 저장하는 가상의 데이터 베이스 

 

엔티티 매니터 팩토리는 여러 쓰레드에서 동시에 접근해도 안전하지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로, 쓰레드간에 절대 공유하면 안 된다. 

 

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

em.persist(member) 

엔티티 매니저를 통해 회원 엔티티를 영속성 컨텍스트에 저장한다. 

 

엔티티 생명주기 : 

비영속(new) : 영속성 컨텍스트와 전혀 관계가 없는 상태 

영속(managed) : 영속성 컨텍스트에 저장된 상태

준영속(detached) :영속성 컨텍스트에 저장되었다가 분리된 상태 

삭제 (removed) : db와 영속성 컨텍스트에서 삭제된 상태 

 

 

영속성 컨텍스트의 특징 

- 영속성 컨텍스트의 식별자 값

 >> 엔티티의 식별자 값(@Id로 테이블의 기본 키와 매핑한 값으로 구별한다.)

- 영속성 컨텍스트와 데이터베이스 저장 

 >> 트랜젝션을 커밋하는 순간 저장한다.(flush)