본문 바로가기
Spring

Spring Day 7 : 영속성 콘텍스트

by 우 석 2024. 1. 26.

영속성 콘텍스트

데이터베이스와 애플리케이션 사이의 중간 역할을 하는 개념. 데이터를 메모리에 저장하여 애플리케이션에서 효율적으로 사용할 수 있게 해 주며, 데이터베이스와의 상호작용을 관리합니다. 

 

간단히 말하면, 영속성 콘텍스트는 Entity 객체를 애플리케이션과 데이터베이스 사이에서 관리해 주는 역할을 합니다. 개발자는 직접 SQL을 작성하지 않아도 JPA를 사용하여 DB에 데이터를 저장하거나 조회할 수 있으며 수정, 삭제 또한 가능합니다. 이러한 일련의 과정을 효율적으로 처리하기 위해 JPA는 영속성 콘텍스트에 Entity 객체들을 저장하여 관리하면서 DB와 소통합니다.

 

Persistence를 객체의 관점으로 해석해 보자면 ‘객체가 생명(객체가 유지되는 시간)이나 공간(객체의 위치)을 자유롭게 유지하고 이동할 수 있는 객체의 성질’을 의미합니다.


EntityManager

 

JPA에서 영속성 콘텍스트를 관리하고 데이터베이스와 상호작용하는 인터페이스입니다. 주로 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하며, 엔티티(Entity) 객체를 생성, 조회, 수정, 삭제하는 기능을 제공합니다.

 

영속성 콘텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요합니다.
개발자들은 EntityManager를 사용해서 Entity를 저장하고 조회하고 수정하고 삭제할 수 있습니다.
EntityManager는 EntityManagerFactory를 통해 생성하며, 일반적으로 DB 하나에 하나만 생성되어 애플리케이션이 동작하는 동안 사용됩니다.

 

// 해당 코드를 호출하면 JPA는 persistence.xml 의 정보를 토대로 EntityManagerFactory를 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("name");

// EntityManagerFactory를 사용하여 EntityManager를 생성
EntityManager em = emf.createEntityManager();

 

JPQL

JPA에서 사용되는 쿼리 언어로, 객체 지향적인 방식으로 데이터베이스를 조회할 수 있습니다. EntityManager를 통해 JPQL을 작성하면, 엔티티 객체를 대상으로 쿼리를 수행할 수 있으며, 데이터 조회도 가능합니다. 

또한, JPQL은 데이터베이스에 종속적이지 않아 여러 데이터베이스에서 동일한 쿼리를 사용할 수 있으며, 애플리케이션의 성능을 최적화할 수 있는 장점이 있습니다. 

'Spring' 카테고리의 다른 글

Spring Day 9 : JPA Auditing  (0) 2024.01.30
Spring Day 8 : Dirty Checking  (0) 2024.01.29
Spring Day 6 : JPA  (0) 2024.01.25
Spring Day 5 : IoC(제어의 역전)과 DI(의존성 주입)  (0) 2024.01.24
Spring Day 4 : 3 Layer Architecture  (1) 2024.01.23