2015-08-24 69 views
0

根据这些信息,当我们创建存储库类时,最好为一个存储库UserRepository(接口),UserRepositoryCustom(类),UserRepositoryImpl(接口)创建1个类和2个接口。为什么我们在创建存储库时需要创建xxxCustom和xxxImpl类?

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

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

+1

你是什么意思“我们可以创建存储库类没有这些类”?如果我正确理解你的问题,你可以创建2个接口UserRepository和UserRepositoryCustom以及1个UserRepositoryImpl类。我们从来没有创建3班。 –

+0

@NitinArora是的,你是对的。我的问题是为什么我们需要创建这些接口。 –

回答

2

如果你签了Spring数据core conceptsUserRepository接口延伸CrudRepositoryJPAReposiory为您提供是免费的实体的所有基本的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数据在此类中查找自定义方法实现,并在调用它们时调用它们。

希望这个解释有帮助。

+0

我意识到,存储库类是接口类,而不是class.thus,它是没有办法用一些逻辑添加新的方法。这就是为什么我们需要创建自定义类 –

相关问题