osiv 설정

바나나·2024년 12월 22일

맞으면서 배우기

목록 보기
3/5

Open Session In View

개인적인 생각을 먼저 말하면
false 로 사용하는게 좋을것 같다. false -> true 변경은 크게 이슈가 없지만, true -> false 변경시 프로젝트에서 어떤 사이드 이펙트가 발생할지 모른다.

이전에 프로젝트를 진행했을때 비동기를 사용하려고 했을때 Apparent connection leak detected이 발생했다. 이때문에 true -> false 로 변경하려고 했을때 LazyInitializationException이 발생

LazyInitializationException 원인은 lazy loding을 사용한 entity의 컬럼을 트랜젝션 밖에서 사용하고 있어서 발생

osiv false 로 사용하면 명시적으로 트랜젝션이 걸린 부분만 DB 커넥션을 유지하는데 이때 트랜젝션 밖에서 lazy 로딩한 entity를 사용하면 이미 커넥션을 끊기 상태에서 DB 요청을해서 오류 발생

원인

entity가 트랜젝션 밖에서 사용한는 것 부터 잘 못되었다.
모델링 후 사용하는게 정상적이다.

해결

osiv off 설정 후 entity를 밖에서 사용하는 코드 모든 부분 수정

profile
Java/Kotlin Spring 개발자 황재명입니다.

0개의 댓글