작성
·
161
0
@Transactional은 기본편에서 나오는 엔티티 매니저의
tx.begin() -> tx.commit의 역할과 같은 건가요?
즉, 필수로 @Transactional이 있어야만 하나요?
없어도 되는걸로 알고 있어서요
답변 1
2
안녕하세요. lbd4946님
메서드 시작 직전에 tx.begin()이 시작되고, 메서드 종료 후에 tx.commit()이 호출된다고 이해하시면 됩니다. (runtime 예외가 터지면 tx.rollback())
JPA를 스프링과 함께 동작하면 트랜잭션 범위와 영속성 컨텍스트의 범위가 일치됩니다.(변형도 있는데, 우선은 이걸 기본으로 생각하시면 됩니다.)
따라서 변경감지, 지연로딩이 모두 이 트랜잭션 범위 안에서 동작합니다.
감사합니다.