인프런 커뮤니티 질문&답변

lbd4946@gmail.com님의 프로필 이미지
lbd4946@gmail.com

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 기능 테스트

@Transactional

작성

·

161

0

@Transactional은 기본편에서 나오는 엔티티 매니저의

tx.begin() -> tx.commit의 역할과 같은 건가요?
즉, 필수로 @Transactional이 있어야만 하나요?

없어도 되는걸로 알고 있어서요

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. lbd4946님

메서드 시작 직전에 tx.begin()이 시작되고, 메서드 종료 후에 tx.commit()이 호출된다고 이해하시면 됩니다. (runtime 예외가 터지면 tx.rollback())

JPA를 스프링과 함께 동작하면 트랜잭션 범위와 영속성 컨텍스트의 범위가 일치됩니다.(변형도 있는데, 우선은 이걸 기본으로 생각하시면 됩니다.)

따라서 변경감지, 지연로딩이 모두 이 트랜잭션 범위 안에서 동작합니다.

감사합니다.

lbd4946@gmail.com님의 프로필 이미지
lbd4946@gmail.com

작성한 질문수

질문하기