[JPA] 영속성 컨텍스트(Persistence Context) 라이프사이클

시나브로·2021년 5월 9일
0

JPA

목록 보기
4/12
post-thumbnail

영속성 컨텍스트(Persistence Context) 라이프사이클


영속성 컨텍스트에는 총 4가지의 LifeCycle이 존재한다.


1. 비영속 상태 (new/transient)

  • 영속성 컨텍스트와 상관 없는 상태
  • JPA와 상관없이 객체만 생성한 상태를 말한다.

ex)

  Member member = new Member();
  member.setId("1234");
  ...

2. 영속 상태 (managed)

  • 영속성 컨텍스트에 관리되고 있는 상태
  • 객체 생성한다음 persist() 하는 순간 영속상태가 된다.
  • commit하는 시점에 영속성 컨텍스트에 영속화되어있는 것에 대한 쿼리가 날아가게 된다

ex)

  Member member = new Member();
  member.setId("1234");
  ...
  em.persist(member);

3. 준영속 상태 (detached)

  • 영속성 컨텍스트에 저장되었다가 분리된 상태
  • 영속성 컨텍스트에서 지운 상태

ex)

  Member member = new Member();
  member.setId("1234");
  ...
  em.persist(member);
  ...
  em.detach(member); // 영속성 컨텍스트에서 분리. 영속성만 삭제
  em.clear(); // 영속성 컨텍스트를 완전히 초기화
  em.close(); // 영속성 컨텍스트를 종료

4. 삭제 상태 (removed)

  • 삭제된 상태
  • detached와 다르게 remove는 DB와 동기화되어 DATA까지 삭제된다.

ex)

  Member member = new Member();
  member.setId("1234");
  ...
  em.persist(member);
  ...
  em.remove(member); // db에서까지 삭제














출처 및 참고

profile
Be More!

0개의 댓글