OSIV란 Open-Session-In-View의 약자로 JPA의 영속성을 관리하는 범위에 대해 설정하는 값이다. 해당 내용을 궁금하게 된 이유는

spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
service를 설계한던 중 다음과 같은 warning 메세지를 보게 되었는데 최대한 warning 메세지를 없애가면서 작업을 하려고 해서 찾게 되었다.

OSIV의 default일 경우 true의 값으로 다음과 같이 적용되어진다. 영속성 컨텍스트의 범위가 트랜잭션의 범위보다 크기 때문에 filter, interceptor나 controller에서도 영속성 컨텍스트에 접근할 수 있게된다.

하지만 OSIV를 false로 주었을 경우 다음과 같이 트랜잭션범위와 영속성 컨텍스트의 생존 범위가 동일해지기 때문에 filter, interceptor와 controller에서 접근할 수 없게 되므로 service와 repository에서 영속성 컨텍스트에 접근하여 데이터를 가져와야만 하게된다.
OSIV를 꼭 false로 세팅할 필요는 없지만 true로 놓고 사용하게 되면 jpa를 사용할 때 영속성 컨텍스트를 길게 사용하는 만큼 connection의 사용 시간도 늘어나게 되므로 성능적 측면으로 볼때 false로 세팅해주는게 좀 더 좋은 설정이 될수 있다. 하지만 프로젝트 구조나 특성상 영속성의 범위가 filter와 controller에서도 사용해야할 경우 굳이 변경할 필요까진 없다!