首页 文章

为什么我们在创建存储库时需要创建xxxCustom和xxxImpl类?

提问于
浏览
0

根据这些信息,当我们创建存储库类时,最好为一个存储库UserRepository(接口),UserRepositoryCustom(类),UserRepositoryImpl(接口)创建1个类和2个接口 .

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations

但是我们可以创建没有这些类的存储库类...为什么我们需要创建这些类,如果我们创建这些类,它们的优点(或缺点)是什么?

1 回答

  • 2

    如果您签出Spring Data core conceptsUserRepository 扩展 CrudRepositoryJPAReposiory 的接口定义提供了对实体免费的所有基本CRUD操作 .

    public interface UserRepository extends JpaRepository<User, Long>
    

    您可以使用naming convention approach或使用@Query attribute在此存储库界面中添加自己的基本自定义查询 .

    如果你想执行一些无法在_2437681中轻易管理和定义的自定义逻辑,例如复杂的连接和存储过程,你需要访问底层 EntityManager ,你需要 UserCustomRepository 接口 . UserRepository 将扩展此接口以继承方法 .

    public interface UserRepository extends JpaRepository<User, Long>, UserCustomRepository {
        void myCustomMethod();
    }
    

    您需要在 UserRepositoryImpl 类中自己提供这些方法的实现 . Spring数据在此类中查找自定义方法实现,并在调用它们时调用它们 .

    希望这个解释有所帮助

相关问题