강의

멘토링

로드맵

Inflearn brand logo image

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

yhwjd님의 프로필 이미지
yhwjd

작성한 질문수

Java/Spring 주니어 개발자를 위한 오답노트

헥사고날 아키텍처 (2)

Repository 인터페이스 위치

작성

·

10

0

class Controller, class Service, Interface Repository, class RepositoryImpl, Interface JpaRepository의 그림에서

Interface Repository 가 Persistence 가 아닌 Business 계층으로 분리하신 이유가 궁금합니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. yhwjd님.

Repository 인터페이스가 Business 계층에 위치한 이유에 대해 궁금해 하셨군요. 이 부분은 의존성 역전 원칙(Dependency Inversion Principle, DIP)과 관련이 있습니다. DIP는 상위 레이어가 하위 레이어에 의존하지 않도록 설계되어야 하며, 인터페이스를 통해 레이어 간의 의존성을 관리합니다.

의존성 역전 및 인터페이스 분리

  • 서비스 레이어(Service Layer): 비즈니스 로직을 처리하고 Persistence 계층에 접근하는 역할을 합니다. 이때, Repository 인터페이스는 데이터 저장소와의 상호작용을 추상화하여, 서비스와의 결합도를 낮춥니다.

  • Persistence 계층: 실제 데이터베이스와의 상호작용을 담당하며, Repository 인터페이스의 구현체가 존재합니다.

주요 목적

  • 유연한 계층 구조: Persistence 계층이 변경되어도 Service 계층에는 영향이 없도록 하여 시스템의 유연성과 유지보수성을 높입니다.
  • 단위 테스트 용이: 인터페이스를 사용함으로써 다양한 Mock이나 Stub을 활용하여 테스트할 수 있습니다.

Repository 인터페이스를 Business 레이어에 두므로써, 서비스 레이어가 이 인터페이스에만 의존하게 되며, 구체적인 구현은 외부에서 주입받아 사용하는 구조로 설계합니다.

관련 질문
- 서비스 레이어(Apllication Layer) 테스트에 대한 질문 에서는 서비스 레이어에서 비즈니스 로직을 처리하는 방법과 함께, 테스트 관련 내용을 다루고 있습니다.

질문 내용이 도움이 되셨길 바라며, 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주세요. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yhwjd님의 프로필 이미지
yhwjd

작성한 질문수

질문하기