inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 서비스 개발

Repository와 Service의 이해

855

SeatSTAR

작성한 질문수 3

1

안녕하세요! 강의를 다시 보다보니 제대로 이해한건지 확실히 하고 넘어가고 싶어서 글을 쓰게 되었습니다.
 
Repository에서 interface로 선언한 것은 각 기능별로 저장할 때 어떤 타입? 으로 저장할지(list 등)
이며 이를 가지고 class에서 implements를 하여 실제 구현체를 만드는데 각 기능별로 저장한 값을 어떻게 반환할지 단순히 데이터의 저장을 위한 기능
 
Service에서는 앞서 Repository와 Domain에서 정한 것을 가지고 실제로 동작하는 기능(조건이 있다면 조건 로직, 검증을 해야한다면 검증 로직 포함)을 작성하는 것으로 이해했습니다.
 
실제 구현 할 때 Service 부분을이 아무래도 비즈니스 로직이다보니 해당 부분에서 오류가 발생한다면 전반적인 작동에도 문제가 생기겠죠?

spring-boot spring MVC java

답변 1

0

OMG

안녕하세요. SeatSTAR님, 공식 서포터즈 OMG입니다.

잘 이해하신 것 같습니다. 약간의 첨언을 하면 아래와 같습니다.

 

Repository에서 interface로 선언한 것은 각 기능별로 저장할 때 어떤 타입? 으로 저장할지(list 등)
이며 이를 가지고 class에서 implements를 하여 실제 구현체를 만드는데 각 기능별로 저장한 값을 어떻게 반환할지 단순히 데이터의 저장을 위한 기능

=> 단순 저장 뿐만 아니라, 구현할 기능에 따라 저장, 수정 등도 포함 될 수 있습니다. 본강의에서는 조회와 저장 기능을 구현하였습니다.

Service에서는 앞서 Repository와 Domain에서 정한 것을 가지고 실제로 동작하는 기능(조건이 있다면 조건 로직, 검증을 해야한다면 검증 로직 포함)을 작성하는 것으로 이해했습니다.
 
실제 구현 할 때 Service 부분을이 아무래도 비즈니스 로직이다보니 해당 부분에서 오류가 발생한다면 전반적인 작동에도 문제가 생기겠죠?

=> Service에는 비즈니스 로직이 포함되며 Service뿐만 아니라, Repository, Controller도 해당 부분에서 오류가 발생한다면 기능에 따라 문제가 발생할 수 있습니다.


감사합니다.

0

SeatSTAR

안녕하세요! 

Repository에서는 store를 이용하여 null인 경우 optional로 감싼다거나 name과 같은 경우를 찾아서 반환하는거 자체가 조회와 저장의 기능을 구현했다고 보는건가요?

그렇다면 Repository에서의 구현은 실제 기능 로직인 Service보다는 추상적인? 기능을 구현했다고 보고 Repository구현한 기능(및 반환될 데이터)을 가지고 Service에서 좀 더 명확하게 기능을 구현하는 실 구현되는 부분이라고 이해하면 될까요??

기능구현을 왜 Repository와 Service에서 하는건가요?

 

1

OMG

강의 순서상 MemberRepository 구현 강의는 들으셨을거라 아래 코드는 보셨을텐데요,

save가 저장 기능을, findById, Name이 조회 기능이라고 보시면 됩니다.

 

Repository와 Service는 역할이 각각 다릅니다.

Repository는 DB와 밀접한 객체입니다. DB에 접근하여 데이터를 조회, 저장, 삭제 등의 역할을 가집니다.

Service는 핵심 비즈니스 로직을 가지는 객체입니다.

예를 들어, 각각의 역할을 분리해놓음으로써 문제가 발생할 시

비즈니스 로직 상 문제가 없는것 같은데 DB 관련 처리에서 문제가 발생한다면 Repository코드를 확인해보면 됩니다.

각각의 역할이 분리되어 개발과 유지보수 등이 용이해집니다.

 

 

0

SeatSTAR

아! Repository는 DB에 접근하여 수행할 기능을 구현하는 것이고 Service는 DB접근과는 상관없이 비즈니스적인 핵심적인 기능을 구현한거라고 이해하면 될까요??

한번 의문이 생기니 왜? 라는 궁금증이 계속 생겼는데 답변을 너무 친절히 잘해주셔서 이해할 수 있었습니다! 번거로우실텐데 계속 답변 달아주셔서 너무 감사드립니다:)

0

OMG

네 맞습니다.

제가 수강평에도 남겨 많은 인프런 이용자 분들에게 공감을 받았는데요,

스프링 핵심원리 기본편 강의 초반에  설명해주시는 객체지향 관련 영한님의 설명을 들으시면 궁금 하셨던 부분이 명확히 이해되면서 많은 것을 배워가실 수 있을거라 생각합니다.

인텔리제이 오류

0

40

1

..

0

103

2

Unused property.....

0

116

2

project JDK is misconfigured

0

157

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

97

2

단위/통합 테스트 버전충돌 문제

0

97

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

246

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

116

2

윈도우 build test오류 질문

1

115

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

108

2

테스트 실행 시 에러 질문

0

306

1

name을 통한 비교와 객체를 통한 비교

0

79

1

빌드 후 libs 없음

1

142

1

윈도우 gradlew.bat 에러

0

179

1

@PostMapping("/members/new")가 동작하지 않습니다

0

97

1

java static class와 kotlin class

0

87

1

스프링 DB연결

0

140

1

소요 시간

0

96

2

ddl.sql에 빨간 밑줄

1

112

2

welcome page 에러

0

195

3

잘 모르겠습니다.

0

170

2

fail을 똑같이 쳤는데 오류가 발생해요

0

169

2

index.html Welcome page

0

133

1

프로젝트 gradle-groovy ?

0

396

1