OSIV(Open Session In View)

영속성 컨텍스트를 뷰까지 열어두는 기능

뷰에서도 지연 로딩을 사용 가능하게 하기 때문에 스프링 프레임워크에서는 기본이 TRUE이다


DB Connection 시기

가져오는 시기

트랜잭션이 처음 발생할 때 DB 커넥션을 가져옴

종료하는 시기

OSIV가 켜져 있는 경우

Untitled

OSIV가 켜져있다면 Service, Repository 단에서 트랜잭션이 끝나도 영속 상태를 끝까지 유지

그래서 **DB 커넥션, 영속성 컨텍스트**는 컨트롤러 단이

최종적으로 response를 내보낼 때까지 살아있고 컨트롤러에서도 지연 로딩 가능

그러나 영속성 컨텍스트를 끝까지 유지한다는 것은

**실시간 트래픽이 중요한 애플리케이션에서 커넥션이 모자라 서비스 장애의 원인**이 될 수 있다

특히 컨트롤러가 외부 API를 호출하면 외부 API의 대기 시간만큼 리소스를 반환하지 못하고 유지해 로딩이 지연

OSIV가 꺼져 있는 경우