Open Session In View : 하이버네이트

이것을 모르면 장애로 이어질 수 있다.

이 기본 값을 사용하면서 시작 시점에 warn 로그를 남기는 것은 이유가 있다.

JPA가 언제 DB 커넥션을 가져올까? 기본적으로 트랜잭션을 시작할 때 영속성 컨텍스트가 커넥션을 가져온다. 서비스 계층에서 트랜잭션을 시작하는 시점에서 커넥션을 가져오는데 언제 반환할까?

OSIV가 켜져 있으면 트랜잭션이 끝나고 컨트롤러로 데이터를 반환할 때 까지 커넥션이 끝나지 않는다.

이전 코드를 보면 컨트롤러에서 레이지 로딩을 했었다. 이게 가능하려면 영속성 컨텍스트가 커넥션을 물고 살아 있어야 한다.

OSIV는 트랜잭션이 끝나도 커넥션을 끝까지 API가 반환될 때까지, view가 렌더링 될 때까지 살아 있게 된다. (응답이 나갈때 까지)

영속성 컨텍스트와 커넥션이 끝까지 살아있는 것이다.

이것 자제가 큰 장점 이지만 단점이 있다.

단점