CS 면접 준비

영속성 컨텍스트 란?

jjong0425 2025. 1. 24. 18:28

💡영속성 컨텍스트( 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. 트랜잭션 관리

→ 트랜잭션 내에서 여러 작업을 모아 한번에 처리할 수 있도록 한다.(데이터베이스와의 상호작용 최적화)

 

 

나의 생각

영속성 콘텍스트는 데이터베이스와 상호작용 전에 눈에 보이지 않는 관리 박스라고 생각한다.

이를 통해 데이터베이스와의 상호작용을 효율적으로 관리하고 성능을 최적화한다.

LIST

'CS 면접 준비' 카테고리의 다른 글

async와 await  (1) 2025.01.23
정규 표현식 이란?  (0) 2025.01.22
유효성 검사 란?  (1) 2025.01.22
인증과 인가 란?  (0) 2025.01.21
싱글톤이란?  (0) 2025.01.21