강의

멘토링

로드맵

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

김병관님의 프로필 이미지
김병관

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

JPA

@Transactional 어노테이션의 기능이 궁금합니다.

작성

·

510

0

저번에 테스트 코드 작성시에는

커밋을 롤백하는 기능이라고 이해했는데,

실제 서비스코드에도 @Transactional 을 써놓는 이유가 궁금합니다.

 

퀴즈

순수 JDBC를 사용할 때, 데이터베이스 리소스(연결, Statement 등) 관리가 어려웠던 주된 이유는 무엇일까요?

SQL 쿼리를 직접 작성해야 해서

각 리소스를 사용 후 반드시 직접 닫아줘야 해서

테스트 간 데이터 독립성을 보장하기 어려워서

의존성 주입 설정이 복잡해서

답변 2

1

안녕하세요. 김병관님, 공식 서포터즈 David입니다.

JPA에서 데이터를 저장/변경할 때 트랜잭션이 필요합니다.

그래서 서비스(데이터의 저장/변경 로직이 있는 곳)에 @Transactional 애노테이션을 붙이는 것입니다.

테스트와 별개로 웹 애플리케이션이 해당 기능(데이터  저장/변경)을 수행할 때 필요로 합니다.

감사합니다.

0

잘 설명된 글입니다


https://velog.io/@kdhyo/JavaTransactional-Annotation-%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90-26her30h

김병관님의 프로필 이미지
김병관

작성한 질문수

질문하기