빠에야는 개발중
OSIV 본문
OSIV
무엇인가?
OSIV란 Open Session In View의 약자로 JPA에서 영속성 컨텍스트와 hibernate session을 뷰가 렌더링 될 때까지 유지시키는 방법이다.
왜 사용하는가?
기존에 @Transactional 메소드까지 유지가 되던 영속성 컨텍스트의 영향 범위는 뷰 렌더링까지는 닿지 않는다. 따라서 controller 단에서 엔티티를 조회할 때 Lazy loading이 걸린다면, LazyInitializationException
을 뱉으면서 실패한다. 이를 해결하기 위해서 영속성 컨텍스트가 뷰를 그릴때도 유지될 수 있도록 하여 Lazy loading을 성공시키는 것이다.
단점
전통적인 OSIV를 기준으로 요청이 들어왔을 때 controller단에서 부터 JDBC connection을 초기화 하여 유지하기 때문에 리소스의 낭비가 있을 수 있다. 스프링에서는 이를 개선하기 위해서 JDBC connection은 @Transactional 메소드 내부에서만 살아있도록 했다.
'공부 > JAVA' 카테고리의 다른 글
N+1 문제 (0) | 2020.10.28 |
---|---|
CAS(Compare And Swap) 알고리즘 (0) | 2020.08.06 |
String, StringBuffer, StringBuilder (0) | 2018.03.17 |
abstract class와 interface (0) | 2018.03.17 |
스트림 api (0) | 2018.03.01 |
Comments