빠에야는 개발중

OSIV 본문

공부/JAVA

OSIV

빠에야좋아 2020. 10. 28. 21:16

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