내일배움캠프/TIL
2024 08 19 TIL : 영속성 컨텍스트
동성만능크리너
2024. 8. 20. 16:12
JPA가 제공하는 기능은 크게
(엔티티와 테이블)을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 볼 수 있다.
여기서 매핑한 엔티티를 실제 사용하는 부분이 엔티티 매니저이다.
엔티티 매니저 : 엔티티를 저장하는 가상의 데이터 베이스
엔티티 매니터 팩토리는 여러 쓰레드에서 동시에 접근해도 안전하지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로, 쓰레드간에 절대 공유하면 안 된다.
영속성 컨텍스트 : 엔티티를 영구 저장하는 환경
em.persist(member)
엔티티 매니저를 통해 회원 엔티티를 영속성 컨텍스트에 저장한다.
엔티티 생명주기 :
비영속(new) : 영속성 컨텍스트와 전혀 관계가 없는 상태
영속(managed) : 영속성 컨텍스트에 저장된 상태
준영속(detached) :영속성 컨텍스트에 저장되었다가 분리된 상태
삭제 (removed) : db와 영속성 컨텍스트에서 삭제된 상태
영속성 컨텍스트의 특징
- 영속성 컨텍스트의 식별자 값
>> 엔티티의 식별자 값(@Id로 테이블의 기본 키와 매핑한 값으로 구별한다.)
- 영속성 컨텍스트와 데이터베이스 저장
>> 트랜젝션을 커밋하는 순간 저장한다.(flush)