본문 바로가기

IT/Spring

[Spring Boot] Hibernate Open Session In View

Spring Boot에서 Hibernate 테스트를 하고 있던 도중 예기치못한 상황을 마주했습니다.

영속성이 끝났다고 생각되는 시점에서 프록시 객체를 조회하면 LazyInitializationException - No Session에러가 발생해야 하는데 Select Query가 실행되는 것이었습니다.

웹 검색을 통해 다음과 같은 사실을 알았습니다.

Open Session In View

Transaction이 종료된 후에도 Controller의 Session이 close되지 않았기 때문에, 영속 객체는 Persistence 상태를 유지할 수 있으며, Session이 열려있고 Persistence 상태이기 때문에 프록시 객체에 대한 Lazy Loading을 수행할 수 있게 됩니다.

출처: https://kingbbode.tistory.com/27 [개발노트 - kingbbode]

위 기능을 사용하지 않으려면 application.properties에 다음과 같은 옵션을 추가해주세요.

spring.jpa.open-in-view=false