▶오늘의 주제 : 영속성 컨텍스트란?
▶ 영속성 컨텍스트란?
영속성 컨텍스트란 엔티티를 영구 저장 하는 환경 이라는 뜻 입니다. 어플리케이션(🤔 지금은 여러분의 자바 코드 그 자체라고 생각하시면 좋을 것 같습니다)이 데이터베이스에서 꺼내온 데이터 객체를 보관하는 역할을 합니다. 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리합니다.
▶ 비영속(New)
- 비영속(New) : 영속성 컨택스트와 관계가 없는 새로운 상태입니다. 해당 객체의 데이터가 변경되거나 말거나 실제 DB의 데이터와는 관련없고, 그냥 Java 객체인 상태죠!
// 엔티티를 생성
Member minsook = new Member();
member.setId("minsook");
member.setUsername("민숙");
▶영속(Managed)
- 영속(Managed) : 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태입니다. 이와 같은 경우 데이터의 생성, 변경등을 JPA가 추적하면서 필요하면 DB에 반영합니다.
💡
// 엔티티 매니저를 통해 영속성 컨텍스트에 엔티티를 저장
em.persist(minsook);
</aside>
▶준영속(Detached)
- 준영속(Detached) : 영속성 컨택스트에서 관리되다가 분리된 상태입니다.
// 엔티티를 영속성 컨택스트에서 분리
em.detach(minsook);
// 영속성 컨텍스트를 비우기
em.clear();
// 영속성 컨택스트를 종료
em.close();
▶삭제(Removed)
- 삭제(Removed) : 영속성 컨택스트에서 삭제된 상태
em.remove(minsook)
'Spring' 카테고리의 다른 글
Spring - Entity와 Repository차이 (1) | 2022.12.07 |
---|---|
Spring - 엔터티(Entity) (0) | 2022.12.07 |
Spring - ORM, JPA, Spring Data JPA 차이점 (0) | 2022.12.07 |
Spring - 절차지향 프로그래밍, 객체지향 프로그래밍, 관점지향 프로그래밍은 각각 어떻게 다른가요? (0) | 2022.12.07 |
Spring - DI, IoC, Bean (0) | 2022.12.04 |