본문 바로가기
IT/spring

스프링 영속성 컨텍스트 (Spring Persistence Context)

by 뉴코딩맨 2023. 7. 4.
스프링 영속성 컨텍스트는 스프링 프레임워크에서 제공하는 기능으로, 데이터베이스와의 상호작용에서 영속성을 관리하는 역할을 합니다. 스프링 영속성 컨텍스트에 대해 자세히 알아보고, 예제를 통해 설명하겠습니다.

 

 

영속성 컨텍스트란?

영속성 컨텍스트는 엔티티의 상태를 관리하는 논리적인 영역입니다. 스프링은 JPA(Java Persistence API)를 기반으로 영속성 컨텍스트를 제공합니다. 영속성 컨텍스트는 데이터베이스와의 통신을 최소화하고, 엔티티를 효율적으로 관리하여 성능을 향상시킵니다.
 

스프링 영속성 컨텍스트 예제

다음은 스프링 영속성 컨텍스트를 사용한 예제 코드입니다.
 
@Service
@Transactional
public class ProductService {
    
    @Autowired
    private ProductRepository productRepository;
    
    public void updateProductPrice(Long productId, double newPrice) {
        Product product = productRepository.findById(productId);
        product.setPrice(newPrice);
    }
    
    // 다른 메소드들...
}

 

위의 예제에서 ProductService 클래스는 ProductRepository를 사용하여 상품 정보를 업데이트하는 메소드를 가지고 있습니다. @Transactional 어노테이션은 메소드 실행 시 트랜잭션을 시작하고, 메소드 실행이 완료되면 트랜잭션을 커밋 또는 롤백합니다.
 
 
updateProductPrice 메소드는 주어진 상품 ID에 해당하는 상품의 가격을 업데이트합니다. 이 때, 영속성 컨텍스트가 사용되는데, findById 메소드를 통해 조회한 엔티티는 영속성 컨텍스트에 의해 관리됩니다. 엔티티의 값을 변경하면 영속성 컨텍스트가 변경을 감지하고, 트랜잭션이 종료되는 시점에 변경된 내용을 데이터베이스에 반영합니다.
 

결론

스프링 영속성 컨텍스트를 사용하면 엔티티의 상태를 효율적으로 관리할 수 있습니다. 영속성 컨텍스트는 데이터베이스와의 통신을 최소화하고, 변경된 엔티티를 효과적으로 저장 및 관리하여 성능을 향상시킵니다. 이를 통해 스프링 프레임워크에서 데이터베이스 조작을 간편하게 수행할 수 있습니다.
 

댓글