根据这些信息,当我们创建存储库类时,最好为一个存储库UserRepository(接口),UserRepositoryCustom(类),UserRepositoryImpl(接口)创建1个类和2个接口 .
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations
但是我们可以创建没有这些类的存储库类...为什么我们需要创建这些类,如果我们创建这些类,它们的优点(或缺点)是什么?
如果您签出Spring Data core concepts, UserRepository 扩展 CrudRepository 或 JPAReposiory 的接口定义提供了对实体免费的所有基本CRUD操作 .
UserRepository
CrudRepository
JPAReposiory
public interface UserRepository extends JpaRepository<User, Long>
您可以使用naming convention approach或使用@Query attribute在此存储库界面中添加自己的基本自定义查询 .
如果你想执行一些无法在_2437681中轻易管理和定义的自定义逻辑,例如复杂的连接和存储过程,你需要访问底层 EntityManager ,你需要 UserCustomRepository 接口 . UserRepository 将扩展此接口以继承方法 .
EntityManager
UserCustomRepository
public interface UserRepository extends JpaRepository<User, Long>, UserCustomRepository { void myCustomMethod(); }
您需要在 UserRepositoryImpl 类中自己提供这些方法的实现 . Spring数据在此类中查找自定义方法实现,并在调用它们时调用它们 .
UserRepositoryImpl
希望这个解释有所帮助
1 回答
如果您签出Spring Data core concepts,
UserRepository
扩展CrudRepository
或JPAReposiory
的接口定义提供了对实体免费的所有基本CRUD操作 .您可以使用naming convention approach或使用@Query attribute在此存储库界面中添加自己的基本自定义查询 .
如果你想执行一些无法在_2437681中轻易管理和定义的自定义逻辑,例如复杂的连接和存储过程,你需要访问底层
EntityManager
,你需要UserCustomRepository
接口 .UserRepository
将扩展此接口以继承方法 .您需要在
UserRepositoryImpl
类中自己提供这些方法的实现 . Spring数据在此类中查找自定义方法实现,并在调用它们时调用它们 .希望这个解释有所帮助