根据这些信息,当我们创建存储库类时,最好为一个存储库UserRepository(接口),UserRepositoryCustom(类),UserRepositoryImpl(接口)创建1个类和2个接口。为什么我们在创建存储库时需要创建xxxCustom和xxxImpl类?
但是,我们可以创建仓储类没有这些类的......为什么我们需要创建这些类的,什么是优点(或过失),如果我们创建这些类?
根据这些信息,当我们创建存储库类时,最好为一个存储库UserRepository(接口),UserRepositoryCustom(类),UserRepositoryImpl(接口)创建1个类和2个接口。为什么我们在创建存储库时需要创建xxxCustom和xxxImpl类?
但是,我们可以创建仓储类没有这些类的......为什么我们需要创建这些类的,什么是优点(或过失),如果我们创建这些类?
如果你签了Spring数据core concepts,UserRepository
接口延伸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数据在此类中查找自定义方法实现,并在调用它们时调用它们。
希望这个解释有帮助。
我意识到,存储库类是接口类,而不是class.thus,它是没有办法用一些逻辑添加新的方法。这就是为什么我们需要创建自定义类 –
你是什么意思“我们可以创建存储库类没有这些类”?如果我正确理解你的问题,你可以创建2个接口UserRepository和UserRepositoryCustom以及1个UserRepositoryImpl类。我们从来没有创建3班。 –
@NitinArora是的,你是对的。我的问题是为什么我们需要创建这些接口。 –