inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스프링 데이터 JPA

Spring config 질문입니다.

261

qkrwnstns52

작성한 질문수 26

1

스프링 데이터 JPA 회원 리포지토리를 사용하기 위해서 강의에서는 

이렇게 돼있는데 

이렇게 하면 안돼나요??? SpringDataJpaMemberRepository의 기능을 사용하는거니깐 제 부족한 논리로는 이게 맞는거 같아서요..ㅠㅠ

java spring-boot MVC spring

답변 3

0

김영한

qkrwnstns52님 맞습니다. 그냥 MemberRepository의 기능만 사용하게 됩니다.

만약 SpringDataJpaMemberRepository의 기능이 모두 필요하면, 향후 확장성을 포기하고, SpringDataJpaMemberRepository를 사용하는 것이 맞습니다.

다형성과 OCP 원칙을 지키는 확장성이냐, 아니면 편리하게 스프링 데이터 JPA가 제공하는 모든 기능을 사용하는 실용성이냐에 따라 트레이드 오프가 있는 것이지요.

관련해서 더 자세한 내용은 다음 강의를 참고해주세요^^

감사합니다.

0

qkrwnstns52

SpringDataJpaMemberRepository가 JpaRepository와 MemberRepository의 기능들을 갖고 있는 인터페이스 아닌가요??

캡처 1 사진처럼하게 돼면 그냥 MemberRepository의 기능만 사용하게 되는게 아닌가요??? ㅠㅠ 지식이 얕아서 죄송합니다..

0

김영한

안녕하세요. qkrwnstns52님

자바 다형성 부분을 공부해보시면 이게 어떤 가치가 있는지 이해할 수 있을거에요.

이 부분을 SpringDataJpaMemberRepository로 적어두면 미래에 SpringDataJpaMemberRepository를 JdbcTemplateMemberRepository로 변경할 때 MemberService의 코드도 변경해야 합니다.

그런데 첫 그림처럼 MemberRepository 인터페이스를 통해서 주입받도록 해두면, SpringDataJpaMemberRepository를 JdbcTemplateMemberRepository로 변경할 때 MemberService의 코드를 전혀 변경하지 않아도 됩니다.

이게 바로 OCP 원칙을 지키는 코드이지요^^

객체지향, 다형성, OCP에 대한 자세한 내용은 다음 강의인 스프링 핵심 원리 - 기본편에서 자세히 설명해드립니다.

감사합니다.

..

0

74

2

Unused property.....

0

98

2

project JDK is misconfigured

0

130

2

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

0

82

2

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

0

91

2

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

0

228

1

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

0

102

2

윈도우 build test오류 질문

1

102

2

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

0

98

2

테스트 실행 시 에러 질문

0

289

1

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

0

77

1

빌드 후 libs 없음

1

128

1

윈도우 gradlew.bat 에러

0

167

1

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

0

88

1

java static class와 kotlin class

0

77

1

스프링 DB연결

0

126

1

소요 시간

0

85

2

ddl.sql에 빨간 밑줄

1

101

2

welcome page 에러

0

180

3

잘 모르겠습니다.

0

163

2

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

0

156

2

index.html Welcome page

0

121

1

프로젝트 gradle-groovy ?

0

364

1

테스트코드 메서드명 한글

0

199

2