엔티티는 영속성을 가진 객체로, DB 테이블에 저장할 내용들을 의미합니다.
즉, 영속성 컨텍스트에 속한 객체를 의미합니다. 이러한 엔티티는 작업이 수행되면서
작업에 따라 JPA가 쿼리를 자동으로 생성해 주어 DB에 영향을 미치는 쿼리들(CRUD)
을 실행하게 됩니다. **@Entity**
어노테이션을 사용함으로써 선언할 수 있습니다.
엔티티 매니저(Entity Manager) : 엔티티의 CRUD 작업 등에 대한 엔티티에 관련된 모든 일들을 처리하는 것을 말하며, 영속성 컨텍스트를 통해 데이터의 변화를 감지하고, 필요한 쿼리들이 자동으로 수행될 수 있도록 도움을 준다.
엔티티 매니저 팩토리(Entity Maneber Factory) : 데이터베이스를 하나만 사용하는 애플리케이션 이라면 엔티티 매니저가 하나만 필요하겠지만, 애플리케이션에서 여러 개의 데이터베이스를 사용하게 된다면 DB에 접근하는 트랜잭션이 생길 때 마다 엔티티 매니저 팩토리를 통해 엔티티 매니저를 만들어서 영속성 컨텍스트에 접근하고, 애플리케이션 전체에 공유하도록 설계된다.
엔티티를 영구 저장하는 환경
엔티티 매니저로 엔티티를 저장하거나 조회하게 되면, 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다.
엔티티의 생명주기
비영속(new/transient) | 영속성 컨테스트와 전혀 관계가 없는 상태 |
---|---|
영속(managed) | 영속성 컨텍스트에 저장된 상태 |
준영속(detached) | 영속성 컨텍스트에 저장되었다가 분리된 상태 |
삭제(removed) | 삭제된 상태 |
1차 Cache
변경 감지(Dirty Checking)
**스냅샷 → 더티체킹 → 트랜잭션 수행(커밋)**
플러시(Flush)
참고 :
https://dev-troh.tistory.com/151
https://devbksheen.tistory.com/entry/엔티티-매니저와-엔티티의-영속성-관리
https://velog.io/@seongwon97/Spring-Boot-영속성-컨텍스트Persistence-Context