728x90
JPA에서 가장 중요한 2가지
- 객체와 관계형 데이터베이스 매핑하기
- 영속성 컨테이너
영속성 컨테이너를 제대로 이해하면 JPA가 내부적으로 어떻게 동작하는지 알 수 있다. 즉, JPA를 더 정확하고 효율적으로 사용이 가능하다.
EntityManager.persist(entity);
- DB에 데이터를 저장하는 것이 아니라 JPA의 영속성 컨텍스트에 데이터를 저장
영속성 컨텍스트
- 논리적인 개념
- 엔티티 매니저를 생성할 때 하나의 영속성 컨텍스트가 생성된다.
- 엔티티 매니저를 통해서 관리, 접근이 가능하다.
엔티티의 생명주기
- 비영속(new/transient)
- 한 번도 영속성 컨텍스트에 들어가지 않은 상태
- 영속(managed)
- 영속성 컨텍스트에 저장된 상태
- 준영속(detached
- 영속성 컨텍스트에 저장되었다가 분리된 상태
- 삭제(removed)
- 영속성 컨텍스트에서 삭제된 상태
[자바 ORM 표준 JPA 프로그래밍 3.2]
비영속
순수한 객체상태, DB, 영속성 컨텍스트와 전혀 관련이 없는 상태
영속
엔티티 매니저를 통해서 조회, 저장 등 행위를 했을 때 영속성 컨테이너에 등록이 되면 영속 상태라 한다. 영속성 컨테이너가 관리하는 엔티티는 영속 상태이다.
준영속
영속성 컨테이너에 의해 관리되던 엔티티가 영속성 컨테이너의 관리에서 벗어나면 준영속 상태라 한다.em.detach(member)
: 영속상태의 엔티티를 준영속 상태로 만든다.em.close()
, em.clear()
영속성 컨테이너를 닫거나 초기화시켜도 엔티티가 준영속 상태가 된다.
삭제
엔티티를 영속성 컨테이너나 DB에서 삭제한다.em.remove(member)
728x90