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

차가운물님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA와 DB 설정, 동작확인

extends JpaRepository<> vs @Repository 질문

21.06.08 15:29 작성

·

2.1K

2

안녕하세요 기본편 강의 잘 들었습니다!

질문이 하나 있는데, DB에 접근하는 클래스를 만들 때 스프링 공식 사이트에서는 extends JpaRepository<>  있고 현재 강의에서는 @Repository로 접근을 하는데 둘의 차이가 있는 것 인가요? 

추상적인 질문이었다면 죄송합니다 ㅠㅠ

답변 3

3

OMG님의 프로필 이미지

2021. 06. 14. 22:56

인텔리제이의 다음과 같은 다이어그램을 보는 기능을 사용하면 다음과 같이 상속 관계를 볼 수 있는데요.

JpaRepository 는 상위 인터페이스에 비해 당연히 많은 기능을 내포하고 있고, Spring Data Jpa를 사용한다면 사용하지 않을 이유는 없다고 생각합니다. 실제 인터페이스 코드를 보시면 이해하기 쉬우실 꺼에요.

,

CrudRepository를 상속한 MemberRepository와 CrudRepository 인터페이스 명세

,

다음과 같은 메서드가 추가 된 JpaRepository.class

,

deleteAll() 부터 saveAll()까지 11개의 메서드만 제공하는 CrudRepository.class

,

JpaRepository를 상속한 MemberRepository에서 사용 가능한 메서드 목록.

(flush(), findAll() 등 CrudRepository를 상속한 memberRepository보다 더 많은 기능이 포함 된 것을 확인 할 수 있습니다.

3

OMG님의 프로필 이미지

2021. 06. 09. 01:25

안녕하세요 ^^

궁금해 하시는 부분은 스프링 구현 코드를 직접 쫓아가서 찾다보면 이유를 알 수 있는데요,

우리가 만든 XXXRepository 인터페이스가 JpaRepository 인터페이스를 '상속'하면 해당 인터페이스의 구현체(Spring Data Jpa의 구현체 )인 SimpleJpaRepository에서 @Repository로 스프링 컨테이너가 관리하는 빈이 되기 때문에 우리가 만든 Repository에서 별도의 @Repository 어노테이션 없어도 스프링 빈이 되어 컴포넌트 스캔의 대상이 되어 사용할 수 있습니다.

김영한님의 프로필 이미지
김영한
지식공유자

2021. 06. 09. 19:06

OMG님 감사합니다^^

차가운물님의 프로필 이미지
차가운물
질문자

2021. 06. 14. 21:34

감사합니다 

@OMG님 JpaRepository는 그냥 findAll, findOne 같은 매서드들이 구현체로 정의 되어 있는 것 인가요? 

그러면 실무에서는 어떤 것을 더 쓰나요?

현재 실전! 스프링 부트와 JPA 활용1 을 완강하고 실전2편을 들을 예정이라서 뒷 내용에 나올 것 같지만 궁금해서 댓글남겨요!

OMG님의 프로필 이미지

2021. 06. 14. 22:58

아래 답변 드렸습니다.
실무에서의 Spring Data Jpa 사용은 영한님의  실전! 스프링 데이터 JPA  에서 다루고 있으니 참고 부탁드립니다

차가운물님의 프로필 이미지
차가운물
질문자

2021. 06. 14. 23:32

답변 감사합니다.

활용2 다음이 실전 스프링 데이터 JPA군요

갈 길이 머네요 ㅠㅠ 

OMG님의 프로필 이미지

2021. 06. 14. 23:41

열심히 하시다보면 금방 이실거에요~ㅎㅎ

지금처럼 학습하다 의문가지시고 탐구하시다보면 반드시 일취월장 하실거라 생각해요

화이팅!

0

김영한님의 프로필 이미지
김영한
지식공유자

2021. 06. 08. 20:45

안녕하세요. Jeongmin Lee님

extends JpaRepository는 스프링 데이터 JPA라는 기술을 사용했습니다.

이 기술은 JPA를 편리하게 사용할 수 있도록 도와주는 기술입니다.

(하지만 JPA 자체를 꼭 이해하고 사용해야 합니다.)

이후 로드맵을 따라가시면 실전! 스프링 데이터 JPA에서 자연스럽게 배우실 수 있습니다^^

감사합니다.