View on GitHub

programming-study

허원철의 개발 블로그

트랜잭션 범위의 영속성 컨텍스트

뷰가 필요한 엔티티를 미리 로딩해두는 방법

OSIV

과거 OSIV

스프링이 제공하는 OSIV

alt spring osiv ※ 출처: https://www.slideshare.net/sungjaepark121/ss-71171382

왜 프레젠테이션 계층에서 수정을 해도 반영이 되지 않을까?

  1. 서블릿 필터나 인터셉터에서는 플러시를 하지 않고 엔티티매니저를 종료시킨다.
  2. 강제로 플리쉬를 호출해도 트랜잭션 범위 밖이기 때문에 TransactionRequiredException이 발생한다.

하지만, 데이터 변경 이후에 트랜잭션 범위에 포함되는 비즈니스로직이 실행된다면 수정된 데이터가 반영되므로 주의하자!