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
'IT > Spring' 카테고리의 다른 글
[Spring Boot] Spring Security의 동작 (0) | 2020.02.07 |
---|---|
[Spring Boot] 선언적 트랜잭션 @Transactional (0) | 2020.02.04 |
[Spring Boot] Hibernate 연동 방법 (0) | 2020.01.23 |
[Spring Boot] Swagger 연동 및 설정 방법 (4) | 2020.01.13 |
[Spring Boot] @Valid 어노테이션으로 Parameter 검증하기 (0) | 2020.01.10 |