영속성 컨텍스트
JPA 에서 가장 중요한 2가지
- 객체와 관계형 데이터베이스 매핑 (Object Relational Mapping)
- 영속성 컨텍스트
EntityManagerFactory, EntityManager
- 엔티티 매니저 팩토리를 통해서 요청이 올 때 마다 엔티티 매니저 생성
- 엔티티 매니저는 내부적으로 DB 커넥션을 사용해서 DB 연결
영속성 컨텍스트
- JPA 를 이해하는데 가장 중요한 용어
- 엔티티를 영구 저장하는 환경 이라는 뜻
EntityManager.persist(entity);
- 논리적인 개념 (눈에 보이지 않는다.)
- 엔티티 매니저를 통해 영속성 컨텍스트에 접근
J2SE 환경
J2EE 환경
- 스프링 프레임워크 같은 컨테이너 환경
- 엔티티 매니저와 영속성 컨텍스트가 N:1
엔티티의 생명주기
- 비영속 (new/transient)
- 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
- 영속 (managed)
- 준영속 (detached)
- 삭제 (removed)
비영속
Member member = new Member();
member.setId("member1");
member.setName("회원1");
영속
Member member = new Member();
member.setId("member1");
member.setName("회원1");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(member);
준영속, 삭제
em.detach(member);
em.remove(member);