Chapter 13 - 웹 애플리케이션과 영속성 관리

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

스프링 컨테이너의 기본 전략

스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다.

== 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻

== 트랜잭션 시작 시 영속성 컨텍스트 생성 / 트랜잭션 끝날 때 영속성 컨텍스트 종료 && 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트 접근

→ 트랜잭션 예외 발생시 롤백하고 플러시 호출 하지 않음.

→ 컨트롤러에서 service를 통해 조회한 엔티티는 준영속 상태이다

트랜잭션이 같으면 Entity Manager가 달라도 같은 영속성 컨텍스트를 사용한다.

트랜잭션이 다르면 다른 영속성 컨텍스트를 사용한다

질문 ⇒ Entity Manager 스레드간 공유하면 안되는데 582 페이지에서는 공유하나? 코드 예제에서 처럼 저렇게 그럼 공유해 사용하는것 잘못 사용하는거 아닌가?

트랜잭션과 복잡한 멀티 스레드 상황을 컨테이너가 처리해 준다.

따라서 개발자는 single thread application 처럼 단순하게 개발 할 수 있고 결과적으로 비즈니스 로직 개발에 집중 가능

준영속 상태와 지연 로딩