Если проверка на core concepts, UserRepository
определения интерфейса Spring Data, который проходит CrudRepository
или JPAReposiory
предоставляет вам все основные операции CRUD бесплатно на сущности для.
public interface UserRepository extends JpaRepository<User, Long>
Вы можете добавить свои собственные основные пользовательские запросы в этом хранилище интерфейс с использованием naming convention approach или с помощью @Query attribute.
В случае, если вы хотите выполнить какую-то пользовательскую логику, которую невозможно легко управлять и определять в UserRepository
, например. сложных объединений и хранимой процедуры, и вам нужен доступ к базовому EntityManager
вам нужен интерфейс UserCustomRepository
. UserRepository
расширит этот интерфейс для наследования методов.
public interface UserRepository extends JpaRepository<User, Long>, UserCustomRepository {
void myCustomMethod();
}
Вам необходимо обеспечить реализацию этих методов самостоятельно в классе UserRepositoryImpl
. Данные Spring ищут реализацию пользовательского метода в этом классе и вызывают их при их вызове.
Надеюсь, это объяснение поможет.
Что вы подразумеваете под «мы можем создать класс репозитория без этих классов»? Если я правильно понимаю ваш вопрос, вы создаете 2 интерфейса '' 'UserRepository и UserRepositoryCustom''' и 1 класс' '' UserRepositoryImpl'''. Мы никогда не создаем 3 класса. –
@NitinArora да, вы правы. Мой вопрос в том, почему нам нужно создавать эти интерфейсы. –