Spring은 3계층으로 나뉜다. JPA는 ORM 프레임워크로 트랜잭션이 시작되는 서비스계층과 데이터 엑세스 계층을 위해 존재한다. 그러나 엔티티(Entity)는 DB로부터 CRUD 데이터를 전달하기 위해, 프레젠테이션 계층에도 존재할 수 있다. 이를 위해, 트랜잭션과 영속성 컨텍스트의 생존범위를 달리 할 필요가 있다. 데이터 엑세스 계층에서 엔티티A를 로드했는데, 프레젠테이션 계층에서 엔티티A를 DTO로 변환하는 과정에서 엔티티A와 연관된 엔티티B가 필요하여 LAZY 전략으로 로딩할 수가 있다. 그러므로 엔티티 로딩을 담당하는 영속성 컨텍스트는 트랜잭션이 끝나도 프레젠테이션 계층(View)의 호출이 종료될 때까지 살아있어야 한다. DB는 단순조회의 경우, 트랜잭션 없이도 조회가 가능하기 때문이다. 이와..