调整repository定义

通常你的Repository interface将会继承自Repository,CrudRepository或者PagingAndSortingRepository。另外,如果你不想继承Spring Data的接口,你也能通过@RepositoryDefinition声明你的Repository interface。继承自CrudRepository会暴露一系列的方法来操作你的实体。如果你喜欢选择性的暴露某些方法,简单的从CrudRepository拷贝你想要暴露的方法到你的domain repository就可以了。

这允许你在Srping Data提供的功能上定义你自己的抽象。

示例7。选择性暴露CRUD方法

     @NoRepositoryBean
     interface MyBaseRepository<T ID extends Serializable> extends Repository<T,ID>{
         T findOne(ID id);
         T save(T entity);
     }

     interface UserRepository extends MyBaseRepository<User,Long>{
         User findByEmailAddress(EmailAddress emailAddress);
     }

你首先为你所有的领域接口定义了一个通用的基础接口并且暴露了findOne(...)和save(...)方法。这些方法会路由到由你选择的Spring Data数据处理方式实现基础仓库中,例如JPA SimpleJapRepository,因为他们在CrudRepository匹配到了这些方法签名。所以UserRepository可以保存用户而且可以通过id找到用户,同样的也可以通过他们的邮件地址查询找到这些用户。

results matching ""

    No results matching ""