스프링: Service와 Repository

Elenaljh·2023년 7월 21일
0

토막지식

목록 보기
1/5

의문

서비스와 리포지토리에서 같은 기능을 수행하는 메서드를 이름만 다르게 만들길래 대체 왜 그런지 궁금하다.
서비스의 메소드는 대부분 리포지토리의 같은 기능 메소드를 호출하는 코드인 것 같다.
예를 들어 서비스의 join()메서드와 리포지토리의 add()메서드가 동일하게 회원가입을 시키는 메서드라면 join()메서드는 아래와 같이 선언되는 것 같다.

public void join(Member member) {
	return Repository.add(member);
}

그런데 왜 이렇게 만드는지 잘 모르겠다. 그냥 리포지토리에는 해시맵이든 DB든 저장소만 선언해두고 서비스 코드에서 그걸 가져다가 쓰면 되는거 아닌가?

정보 찾아봄

  • repository 패키지는 DB에 접근하는 모든 코드가 모여있다
  • service 패키지는 DB에 접근하는 코드는 repository에 위임하고, 비즈니스 로직과 관련된 모든 코드가 모여있다.
  • 이렇게 구분해두면 비즈니스 로직과 관련된 부분에 문제가 발생했을 때는 service 패키지를 확인하고, DB 접근과 관련된 문제가 발생하면 repository 부분을 확인하면 된다/
  • 즉 Service에서 db접근까지 다루면 코드가 너무 복잡해지고 유지보수하기에도 어려워져서 일부러 나눈 것 같다.
  • 나중에 MVC 패턴 배울 때 자세히 배울 것 같긴 하다.

출처

김영한님 답변
Controller, Service, Repository가 뭘까

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

글을 읽으며 저도 같은 고민을 해보게 되었습니다. 서비스와 리포지토리의 관계에 대해 다시 한번 생각해볼 수 있는 좋은 글이었습니다. 잘 읽었습니다.

답글 달기