Spring boot

OSIV (Open Session In View) 란?

 

면접 때 질문 받은 키워드인데 처음 들어보는 개념이어서 공부하고 정리해보았다.

 

OSIV

- 세션의 시작은 서블릿이 시작되는 시점 부터 (세션은 영속성 컨텍스트를 포함)

- 트랜잭션의 시작은 서비스 레이어부터, JDBC 커넥션도 이 시점부터.

- 트랜잭션의 종료는 서비스 계층에서 종료, JDBC 커넥션도 이 시점 부터 종료.

- 세션은 컨트롤러 영역까지 끌고 가기 때문에 영속성이 보장되어 select가 가능해지고 lazy-loading이 가능해진다.

 

OSIV는 이렇게 presentation layer까지 세션을 유지하는 것을 뜻한다.

View에서 프록시 객체에 대한 정보가 필요할 때 JDBC 커넥션을 열어서 받아올 수 있다.

다만 트랜잭션은 이미 종료된 상태이기 때문에 정보 변경은 불가능하다.

 

설정방법

yml 파일에서 아래대로 설정하면 사용할 수 있다.

스프링 부트 2.0부터는 자동으로 true 로 설정되어있다.

 

 

 

참고

https://www.youtube.com/watch?v=fSXh4hWJtKo 

https://ykh6242.tistory.com/102