💡영속성 컨텍스트( Persistence Context )
→ 데이터베이스와의 상호작용을 관리하는 환경을 의미한다.
→ 엔터티 객체의 생명주기를 관리하고, 데이터베이스와의 연결을 통해 객체의 상태를 유지한다.
💡엔터티 매니저( Entity Manager )
→ 영속성 컨텍스트에 접근하고 이를 관리하는 인터페이스이다.
→ 엔티티의 객체를 영속화( persist ), 조회( find ), 삭제( remove ), 수정을 할 수 있다.
그림을 보면,
EntityManagerFactory에서 엔터티 매니저를 생성한다.
앤터티 매니저가 생성되면 자동으로 영속성 컨텍스트가 생성된다.
이를 통해 애플리케이션과 데이터베이스 사이의 객체를 보관하는 눈에 보이지 않는 하나의 박스개념이 생겼다고 볼 수 있다.
엔터티의 객체를 생성하였다고 바로 영속성 콘텍스트에 의해 관리되는 것이 아니다.
📌엔티티의 생명주기
1. 비영속 상태( Transient )
// 비영속 상태
Member member = new Member();
member.setName("홍길동");
member.setAge(20);
엔터티가 생성되었지만 영속성 컨텍스트에 저장되지 않았다.( member객체가 메모리에만 존재 )
2. 영속 상태( Managed )
// EntityManager 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
// 영속 상태로 전환
em.persist(member); // 엔티티를 영속성 컨텍스트에 저장
엔터티매니저를 생성 후 persist()를 사용하여 영속성 컨텍스트에 저장 및 관리한다.
3. 준영속 상태( Detached )
em.detach(member);
엔터티가 영속성 컨텍스트에서 분리된 상태이다.
더 이상 관리를 받지 못하며 영속성 콘텍스트의 기능을 사용하지 못한다.
5. 삭제 상태( Removed )
em.remove(member);
영속성 컨텍스트에서 엔터티가 삭제된 상태이다.
✴️ 영속성 콘텍스트의 장점
1. 캐시 역할
→ 동일한 엔터티에 대한 반복 조회 시 데이터베이스에 접근하지 않고 메모리에서 직접 가져올 수 있다.
2. 변경 감지
→ 엔터티의 상태가 변경되면 자동으로 감지하여 필요한 SQL 쿼리를 생성한다.
3. 트랜잭션 관리
→ 트랜잭션 내에서 여러 작업을 모아 한번에 처리할 수 있도록 한다.(데이터베이스와의 상호작용 최적화)
나의 생각
영속성 콘텍스트는 데이터베이스와 상호작용 전에 눈에 보이지 않는 관리 박스라고 생각한다.
이를 통해 데이터베이스와의 상호작용을 효율적으로 관리하고 성능을 최적화한다.
'CS 면접 준비' 카테고리의 다른 글
async와 await (1) | 2025.01.23 |
---|---|
정규 표현식 이란? (0) | 2025.01.22 |
유효성 검사 란? (1) | 2025.01.22 |
인증과 인가 란? (0) | 2025.01.21 |
싱글톤이란? (0) | 2025.01.21 |