Java/Spring

OSIV

파란배개 2025. 2. 6. 18:00

JPA 레포지토리와 영속성 컨텍스트

  • JPA 레포지토리는 영속성 컨텍스트를 가진다.
  • **기본적인 Fetch 전략은 Lazy(지연 로딩)**이다.
  • 조회 후 영속성 컨텍스트가 끝난 후에 @OneToMany 관계 데이터를 가져오는 것은 원칙적으로 불가능.
  • 하지만, Spring Boot는 컨트롤러 내에서는 영속성 컨텍스트를 유지시키는 전략을 기본적으로 사용.
    • 이를 OSIV(Open Session in View) 전략이라고 한다.
    • 설정 변경 가능: application.yml
      spring:
        jpa:
          open-in-view: false  # 비활성화
    • spring: jpa: open-in-view: true # 활성화

OSIV(Open Session in View)란?

Spring 백엔드 구조:

  • Repository(레포지토리)
  • Service(서비스)
  • Controller(컨트롤러)
  • View Layer(뷰 레이어 - Thymeleaf 등) (Restful하게 작성하면 뷰 레이어 사용 안 함)

OSIV는 뷰 레이어에서 엔티티를 직접 사용하거나 Lazy Loading 데이터를 조회할 가능성을 대비하여 영속성 컨텍스트를 유지하는 전략.

  • RESTful API를 사용할 경우, OSIV는 불필요한 자원 소모를 초래할 수 있으므로 비활성화하는 것이 일반적.
  • 하지만, 켜둬도 큰 문제가 발생하지는 않음.

'Java > Spring' 카테고리의 다른 글

Web Server와 WAS  (1) 2025.02.16
어노테이션(Annotation)  (2) 2025.02.09
Spring Security  (0) 2025.02.06
Servlet, Dispatcher Servlet, Servlet Container  (0) 2025.02.02
스프링에서 잭슨 라이브러리의 직렬화/역직렬화  (1) 2025.01.18