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

Jaesang Yoon님의 프로필 이미지
Jaesang Yoon

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

실용적인 구조

@Transactional 적용 (Spring Data JPA, JPA 상황에 따른..)

해결된 질문

작성

·

204

0

섹션 8의 <실용적인 구조> 강의에서 질문드립니다.

JPA의 모든 데이터 변경은 트랜젝션 안에서 일어나기 때문에 JPA를 사용할 때는 리포지토리 계층에 @Transactional을 붙여야한다고 배웠습니다.

  1. 그런데 Spring Data JPA는 @Transactional을 붙이지 않아도 @Transactional 처리를 자동으로 한다는 것 같은데 맞는 얘긴가요?

  2. 원래 트랜젝션 적용은 서비스 계층에서 이뤄저야한다고 배웠습니다. 그래서 서비스 계층에서 @Transactional을 붙여왔고요. 그런데 해당 강의의 8분 지점에서 ItemServiceV2의 경우 Spring Data JPA에 의존하고 있기 때문에 리포지토리 계층에서는 @Transactional을 적용하지 않았고 서비스 계층인 ItemServiceV2에서 @Transactional을 적용한 것 같은데 맞을까요?

 

 

답변 1

0

안녕하세요. Jaesang Yoon님, 공식 서포터즈 David입니다.

  1. 네, 맞습니다. Spring Data Jpa의 JpaRepository를 상속받아 repository를 구현하게 되면 그 구현체로 SimpleJpaRepository가 넘어옵니다. 이 클래스를 살펴보시면 @Transactional이 붙어 있는 걸 볼 수 있습니다.

  2. 네, 맞습니다. 다만, @Transactional을 서비스 계층에 걸어주는 이유는 서비스 계층 내에서 수행되는 여러 동작을 하나의 트랜잭션으로 묶기 위함입니다.

감사합니다.

Jaesang Yoon님의 프로필 이미지
Jaesang Yoon

작성한 질문수

질문하기