OSIV

2023. 6. 11. 14:16BackEnd(Java)/JPA 개념

✅ 아래 내용들에 대해서 알아보자

- OSIV
- OSIV 설정에 따른 차이점

 

 

OSIV

Open Session In View(OSIV)는 Hibernate가 영속성 컨텍스트와 DB 트랜잭션의 생명 주기를 관리하는 전략이다.

 

JPA에서 트랜잭션이 시작될떄 영속성 컨텍스트가 DBCP에 있는 커넥션을 얻어와서 DB와 연결을 한다.

그리고 트랜잭션 종료 후 커넥션을 반환하여 DB와 연결을 종료하게 된다. (OSIV 옵션에 따라 다름)

 

OSIV 옵션을 설정하는 방법은 아래와 같다. 기본값은 TRUE이다.

spring.jpa.open-in-view=false

 

OSIV 설정 안하면 다음과 같은 로그가 뜨게 된다.(기본값이 TRUE)

OSIV 미설정시

 

 

OSIV ON

 OSIV를 on일 경우(spring.jpa.open-in-view=true) 아래와 같이 요청 영속성 컨텍스트 생존 범위가 웹 요청을

 

OSIV를 ON으로 할 경우

 

OSIV OFF

 OSIV를 OFF일 경우(spring.jpa.open-in-view=false) 아래와 같이 영속성 컨텍스트 범위가 트랜잭션 시작/종료와 동일한 라이프 사이클을 가지게 된다. 

 

그리고 트랜잭션 시작시 DBCP에 있는 커넥션을 얻어 연결하고 트랜잭션가 종료 되면 DBCP에 반납한다.

따라서 커넥션 리소스를 낭비하지 않게 된다. 대신 OSIV를 끄면 모든 지연로딩을 트랜잭션 안에서 처리해야한다.

 

 

반응형

'BackEnd(Java) > JPA 개념' 카테고리의 다른 글

값 타입  (1) 2023.05.22
엔티티 매핑  (0) 2023.05.21
영속성 컨텍스트  (0) 2023.05.17