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

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

작성한 질문수

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

JPA와 DB 설정, 동작확인

extends JpaRepository<> vs @Repository 질문

작성

·

2.1K

2

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

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

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

답변 3

3

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

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

,

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

,

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

,

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

,

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

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

3

안녕하세요 ^^

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

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

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

OMG님 감사합니다^^

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

감사합니다 

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

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

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

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

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

답변 감사합니다.

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

갈 길이 머네요 ㅠㅠ 

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

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

화이팅!

0

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

안녕하세요. Jeongmin Lee님

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

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

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

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

감사합니다.

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

작성한 질문수

질문하기