Open tonykang22 opened 1 year ago
트랜잭션 범위의 영속성 컨텍스트
@Transactional
LazyInitializationException
FetchType.EAGER
N+1 문제
initialize()
Open Session in View
Open EntityManager in View
엔티티Wrapper
TransactionRequiredException
13장. 웹 애플리케이션과 영속성 관리
트랜잭션 범위의 영속성 컨텍스트
스프링 컨테이너의 기본 전략
트랜잭션 범위의 영속성 컨텍스트
전략을 기본으로 사용한다.@Transactional
애노테이션을 사용하면 스프링의 트랜잭션 AOP가 대상 메소드보다 먼저 동작한다.LazyInitializationException
예외가 발생할 것이다.글로벌 페치 전략 수정
FetchType.EAGER
)N+1 문제
가 발생한다.JPQL 페치 조인
강제로 초기화
initialize()
메소드를 사용해 프록시를 강제로 초기화할 수 있다.FACADE 계층
OSIV
Open Session in View
)는 영속성 컨텍스트를 뷰까지 열어둔다는 뜻이다.Open EntityManager in View
)라고 하지만 관례상 OSIV라 부른다.과거 OSIV: 요청 당 트랜잭션
엔티티를 읽기 전용 인터페이스로 제공
엔티티 래핑
엔티티Wrapper
객체를 만들어 읽기 메소드만 제공한다.DTO만 반환
스프링 OSIV: 비즈니스 계층 트랜잭션
스프링 OSIV 분석
트랜잭션 없이 읽기
TransactionRequiredException
이 발생하게 된다.스프링 OSIV 주의 사항