如何在服务类中隐藏spring数据存储库函数?

时间:2016-05-16 06:26:54

标签: spring spring-data spring-data-jpa

我正在使用spring数据JPA存储库,我的要求是当我在服务类中调用存储库类方法时,它应该只显示自定义方法,如addUser(X,Y)而不是save()。

  • 我理解的很少,Spring框架在运行时提供spring存储库的实现,所以我们不能提供自己的实现。 (这将是开销)。
  • JPARepository中的所有方法都只是公共的,所以当我们实现这个接口时,它的所有方法都是可见的。
  • 我正在考虑同时使用DAO和Repository。 DAO将提供自定义函数签名,存储库将实现DAO接口。

任何黑客?

2 个答案:

答案 0 :(得分:1)

如果您不想使用JpaRepositoryCrudRepository中的方法,请不要仅使用Repository来扩展这些方法。拥有像

这样的存储库接口是完全没问题的
MyVeryLimitedRepository extends Repository<User, Long> {
     User findByName(String name);
}

当然,像addUser(X,Y)这样的方法需要自定义实现。

答案 1 :(得分:0)

在这种情况下你可以很好地使用DAO模式。

在服务类中实现DAO模式

  1. 您可以在Service和Repository之间创建一个包装器。

  2. 您可以自定义DAO图层代码,仅将自定义方法公开给服务图层