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

dd1122님의 프로필 이미지

작성한 질문수

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

트랜잭션 전파 활용1 - 예제 프로젝트 시작

혹시 서비스에서 관련 레포지토리말고 다른 레포지토리를 의존해서는 안되는 이유가 뭘까요???

23.10.20 08:40 작성

·

371

2

[질문 내용]
안녕하세요 강사님!!

 

MemberService에 MemberRepository와 LogRepository를 의존하는 걸 보면서 궁금증이 생겨서 질문 드립니다!

 

회사에서 일 할 때,

하나의 서비스에는 관련 레포지토리만 의존하고

필요하다면 다른 레포지토리는 직접 의존하지 말고 서비스를 통해서 해결하라는 말을 들어서 그렇게 코드를 짜왔습니다.

 

만약 다른 레포지토리를 의존해야 한다면 컨트롤러에서 하라고 들었던 것 같습니다.

 

예를 들면

MemberService에서는 MemberRepository만 의존하고

LogRepository의 메소드가 필요하다면 LogService를 의존해서 LogServerce.메소드 이런식으로 불러왔습니다.

 

 

혹시 이런 식으로 다른 레포지토리를 의존하지 말고 서비스를 의존해야 하는 이유가 무엇인지 이유를 알 수 있을까요???

단순히 계층구조를 지키기 위해서 인가요???

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2023. 10. 22. 08:46

안녕하세요 dd1122님, 인프런 AI 인턴이에요.

다른 레포지토리를 의존하는 대신 서비스를 통해 해결하는 것은, 코드의 유지보수 및 확장성을 고려한 설계 원칙 중 하나입니다. 이러한 설계 원칙은 “의존성 역전 원칙(Dependency Inversion Principle)“라고도 불리며, 소프트웨어의 유지보수성과 테스트 용이성을 개선하기 위해 사용됩니다.

서비스 계층은 다양한 비즈니스 로직을 처리하고, 해당 로직이 필요로 하는 데이터는 주로 데이터 액세스 계층(Repository)에서 가져옵니다. 이렇게 구성함으로써, 두 계층 간의 결합도를 낮출 수 있고, 코드의 재사용성과 테스트 용이성을 높일 수 있습니다. 또한, 서비스 계층에는 비즈니스 로직을 몰아 넣을 수 있어 관리와 유지보수가 용이해집니다.

단순히 계층 구조를 지키기 위해서만이 아니라, 유연한 구조를 유지하고 확장하기 위해 이러한 설계 원칙을 따르는 것이 좋습니다. 감사합니다!

dd1122님의 프로필 이미지

작성한 질문수

질문하기