• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

transactional 질문.

21.11.26 09:57 작성 조회수 164

0

transactional 을 리포지토리단에 걸지 않고, 서비스단에 거는 이유가 있을까요~?

답변 1

답변을 작성해보세요.

0

David님의 프로필

David

2021.11.26

안녕하세요. HK_LEE님, 공식 서포터즈 David입니다.
.
1. 서비스 레이어와 리포지토리 레이어가 갖는 역할이 다릅니다.

2. 서비스 레이어에서 실행되는 로직을 하나의 트랜잭션으로 묶고 싶기 때문입니다.

 

서비스 레이어는 인프라스트럭처(DB, Mail 등)와의 협업, 도메인이 처리할 수 있는 범위를 넘어서는 비즈니스 로직등을 처리합니다.

리포지토리 레이어는 DB에 접근하는 로직을 처리합니다.

만약 서비스 레이어가 아닌 리포지토리 레이어에 트랜잭션을 걸어준다면 서비스 레이어에서 하나의 트랜잭션으로 묶여야 하는 로직들은 모두 리포지토리 레이어로 옮겨야 합니다. 그렇게 되면 리포지토리 레이어는 DB와 통신하여 데이터를 관리하는 것 이상의 역할을 감당하게 되는 것입니다. 유지보수 측면에서도 좋지 않은 구조입니다.

 

참고

* https://www.inflearn.com/questions/250279

* https://www.inflearn.com/questions/77417

.
감사합니다.

채널톡 아이콘