작성
·
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님 JpaRepository는 그냥 findAll, findOne 같은 매서드들이 구현체로 정의 되어 있는 것 인가요?
그러면 실무에서는 어떤 것을 더 쓰나요?
현재 실전! 스프링 부트와 JPA 활용1 을 완강하고 실전2편을 들을 예정이라서 뒷 내용에 나올 것 같지만 궁금해서 댓글남겨요!
0
안녕하세요. Jeongmin Lee님
extends JpaRepository는 스프링 데이터 JPA라는 기술을 사용했습니다.
이 기술은 JPA를 편리하게 사용할 수 있도록 도와주는 기술입니다.
(하지만 JPA 자체를 꼭 이해하고 사용해야 합니다.)
이후 로드맵을 따라가시면 실전! 스프링 데이터 JPA에서 자연스럽게 배우실 수 있습니다^^
감사합니다.
OMG님 감사합니다^^