용꿀
꼬마개발자허니
용꿀
전체 방문자
오늘
어제
  • 분류 전체보기 (250)
    • 개발 (77)
      • 스프링 입문 (7)
      • 스프링 기본 (9)
      • ToDo List using JPA (2)
      • 스프링 개념 (9)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (8)
      • 스프링 MVC (3)
      • CS (21)
      • 개발 팁 (8)
      • 스프링 MSA (5)
      • 곰터뷰🐻 (5)
    • 알고리즘 (169)
      • 알고리즘 문제 풀이 (165)
    • 잡동사니 (1)
      • 노래 가사 (1)
hELLO · Designed By 정상우.
용꿀

꼬마개발자허니

[Spring] Open-In-View란?
개발/스프링 개념

[Spring] Open-In-View란?

2022. 11. 19. 14:55

Open-In-View는 Open-Session-In-View 또는 Open-EntityManager-In-View라고 불리기도 한다.

 

Default값은 true이며, 이 경우에는 영속성 컨텍스트가 트랜잭션 범위를 넘어선 레이어까지 살아있다.

API에서는 클라이언트에게 응답될 때까지, View에서는 View가 렌더링될 때까지 영속성 컨텍스트가 살아있다.

 

아래처럼 application.properties에서 false로 설정해주었다면, 영속성 컨텐스트는 트랜잭션을 종료할 때 같이 닫히게 된다.

spring.jpa.open-in-view=false

위 그림은 OSIV(Open-Session-In-View)가 True일 때를 보여준다. 

위 그림은 OSIV(Open-Session-In-View)가 False일 때를 보여준다. 

 

OSIV가 True일 때의 장점

  • 엔티티 수정이 트랜잭션이 있는 계층에서만 동작
  • 트랜잭션이 없는 프레젠테이션 계층에서는 Lazy Loading을 포함한 조회만 가능

 

OSIV가 True일 때의 단점

  • PersistenceContext를 여러 트랜잭션이 공유할 수 있어 문제가 발생 가능(특히 Rollback 시 골치 아픔)
  • 프레젠테이션 계층에서 Lazy Loading에 의해 SQL이 실행되기 때문에 쿼리 튜닝 시에 관리 포인트가 넓어짐
  • OSIV는 엔티티를 영속 상태로 유지하기 때문에 DB 커넥션 리소스를 길게 사용해 실시간 트래픽이 중요한 서비스일 경우 커넥션이 모자라 장애 발생 가능

 

출처 : https://gracelove91.tistory.com/100

 

[JPA]open-session-in-view 를 알아보자

Open-In-View 또는 Open-Session-In-View 또는 Open-EntityManager-In-View 란? 관례상 OSIV 라고 한다. true일 경우 영속성 컨텍스트가 트랜잭션 범위를 넘어선 레이어까지 살아있다. Api라면 클라이언트에게 응답될

gracelove91.tistory.com

출처 : https://jaimemin.tistory.com/2080

 

[SpringBoot] OpenSessionInView

개요 JPA를 사용하는 서비스를 개발하는 도중 Controller에서 데이터를 변경했는데도 불구하고 DB에 변경이 되지 않는 문제가 발생했습니다. 검색해보니 이는 Transactional 범위 밖에서 데이터를 변경

jaimemin.tistory.com

 

'개발 > 스프링 개념' 카테고리의 다른 글

[Spring] Session이란?  (0) 2023.01.25
[Spring] Select에 @Transaction을 사용하는 이유  (0) 2023.01.20
[Spring] Spring 웹 계층 구조  (0) 2023.01.20
[Spring] 의존성 주입이란?  (0) 2023.01.13
[Spring] 영속성 컨텍스트와 @Transactional 어노테이션  (0) 2022.11.19
    '개발/스프링 개념' 카테고리의 다른 글
    • [Spring] Select에 @Transaction을 사용하는 이유
    • [Spring] Spring 웹 계층 구조
    • [Spring] 의존성 주입이란?
    • [Spring] 영속성 컨텍스트와 @Transactional 어노테이션
    용꿀
    용꿀

    티스토리툴바