LinkedIn

Open Session In View와 트랜잭션, 그리고 영속성 컨텍스트

2021. 3. 24. 22:12 | 자바 개발자되기

Open Session In View?

Open session in view는 view에서 session을 열겠다는 속성이다.

 

그럼 언제 view에서 session을 열고자 할까?

 

Controller에서 객체를 응답으로 보내고, view에서 사용자의 입력에 따라 객체의 값을 수정하고자 할 때 사용할 수 있다.

 

이렇게 수정된 객체는 Open Session in view 설정에 따라 영속성 컨텍스트에 반영이 되고, Datasource(DB)에 기록될 것이다.

 


1. Open Session In View = False

이 옵션이 꺼져 있을 때에는 일반적으로 트랜잭션이 종료될 때 영속성 컨텍스트도 같이 비워진다.

 

 

2. Open Session In View = True

옵션이 켜져 있다면 트랜잭션이 종료되어도 영속성 컨텍스트는 비워지지 않는다.


주의 사항

Open Session In View 옵션이 켜져 있는 상태에서는 더티 체킹에 주의해야 한다.

트랜잭션이 종료되어 객체가 비영속 상태가 되었을 것이라 생각하기 쉽기 때문에 이후 객체의 상태가 변경된다면 더티 체킹이 발생하여 의도치 않은 값 변경이 적용될 수 있다.