면접 때 질문 받은 키워드인데 처음 들어보는 개념이어서 공부하고 정리해보았다.
OSIV
- 세션의 시작은 서블릿이 시작되는 시점 부터 (세션은 영속성 컨텍스트를 포함)
- 트랜잭션의 시작은 서비스 레이어부터, JDBC 커넥션도 이 시점부터.
- 트랜잭션의 종료는 서비스 계층에서 종료, JDBC 커넥션도 이 시점 부터 종료.
- 세션은 컨트롤러 영역까지 끌고 가기 때문에 영속성이 보장되어 select가 가능해지고 lazy-loading이 가능해진다.
OSIV는 이렇게 presentation layer까지 세션을 유지하는 것을 뜻한다.
View에서 프록시 객체에 대한 정보가 필요할 때 JDBC 커넥션을 열어서 받아올 수 있다.
다만 트랜잭션은 이미 종료된 상태이기 때문에 정보 변경은 불가능하다.
설정방법
yml 파일에서 아래대로 설정하면 사용할 수 있다.
스프링 부트 2.0부터는 자동으로 true 로 설정되어있다.
참고
'Spring boot' 카테고리의 다른 글
[스프링 핵심 원리 고급편] 동적 프록시 기술 (0) | 2023.04.09 |
---|---|
[초보개발자를 위한 스프링5 프로그래밍 입문] 스프링 시작하기 (0) | 2022.11.27 |
ec2 인스턴스 ssh로 접근하기 (0) | 2022.04.09 |
DB call을 줄여보자 (0) | 2022.03.10 |
[소셜로그인] 2탄 Spring Security, JWT, OAuth 적용하기 (0) | 2022.02.22 |