programing

@JpaRepository를 구현할 때 Repository가 필요하지 않습니까?

css3 2023. 3. 11. 09:18

@JpaRepository를 구현할 때 Repository가 필요하지 않습니까?

스프링 부트 앱에 저장소 클래스가 있습니다.먼저, 나는 그것에 주석을 달았다.@Repository그리고 나서 저는JpaRepository주석을 제거했지만 여전히 작동합니다.

난 그걸 봤어.JpaRepository가지고 있다@NoRepositoryBean주석입니다.

이게 어떻게 작동하나요?아니면 이게 안 되고 내 어플리케이션에 이상한 게 있는 거야?

를 붙일 필요는 없습니다.@Repository확장 인터페이스의 주석JpaRepository; Spring은 미리 정의된 저장소 중 하나를 확장함으로써 저장소를 인식합니다.Repository인터페이스입니다.

의 목적@NoRepositoryBean주석은 Spring이 특정 인터페이스를 단독으로 저장소로 취급하지 않도록 하기 위한 것입니다.JpaRepositoryinterface에는 이 주석이 있습니다.이는 저장소 자체가 아니라 자신의 저장소 인터페이스에 의해 확장되는 것을 의미하며, 이러한 주석은 선택되어야 합니다.

아니면 이게 안 되고 내 어플리케이션에 이상한 게 있는 거야?

정상적으로 동작하며, 당신의 어플리케이션에 이상한 점은 없습니다.

그것은 필수가 아니다.이 기능이 작동하는 이유는 패키지를 프레임워크로 지정하여 저장소를 검색하도록 지정했기 때문입니다.@EnableJpaRepositories("packagestoscan")

난 네가 그걸 준비했다고 생각해.@EnableJpaRepositories.이것에 의해,Spring Data repositories주석을 달지 않아도@Repository.

javadoc에서:

JPA 저장소를 활성화하기 위한 주석입니다.기본적으로 주석이 달린 구성 클래스의 패키지에서 스프링 데이터 리포지토리를 검색합니다.

또, 다음과 같이 지정할 수도 있습니다.basePackages/basePackageClasses기본값을 변경합니다.

스프링 데이터 jpa를 사용할 때는 저장소를 명시적으로 지정할 필요가 없습니다.스프링 데이터 jpa는 저장소를 확장하는 모든 인터페이스를 검색하고 구현을 자동으로 생성합니다.

구현 중인 @Repository 클래스로 주석을 다는 것이 좋습니다.예를 들어 다음과 같습니다.

@Repository
JpaRepositoryImpl implements JpaRepository 

언급URL : https://stackoverflow.com/questions/44069367/repository-not-necessary-when-implementing-jparepository