如何在服务类中隐藏spring数据存储库功能?
Posted
技术标签:
【中文标题】如何在服务类中隐藏spring数据存储库功能?【英文标题】:How to hide spring data repository functions in service class? 【发布时间】:2016-09-11 21:18:43 【问题描述】:我正在使用 Spring Data JPA 存储库,我的要求是当我在服务类中调用存储库类方法时,它应该只显示自定义方法,如 addUser(X,Y) 而不是 save()。
我了解的很少,spring 存储库的实现是由 spring 框架在运行时提供的,所以我们不能提供自己的实现。 (这会产生开销)。 JPARepository 中的所有方法都是公开的,所以当我们实现这个接口时,所有方法都将是可见的。 我正在考虑同时使用 DAO 和存储库。 DAO 将提供自定义函数签名,存储库将实现 DAO 接口。任何黑客?
【问题讨论】:
【参考方案1】:如果您不想要来自 JpaRepository
或 CrudRepository
的方法,请不要扩展它们,而只需使用 Repository
。拥有像
MyVeryLimitedRepository extends Repository<User, Long>
User findByName(String name);
当然,像addUser(X,Y)
这样的方法需要自定义实现。
【讨论】:
【参考方案2】:在这种情况下,你可以很好地使用 DAO 模式。
通过在服务类中实现 DAO 模式
您在 Service 和 Repository 之间创建一个包装器。
您可以自定义编码您的 DAO 层以仅向服务层公开自定义方法
【讨论】:
以上是关于如何在服务类中隐藏spring数据存储库功能?的主要内容,如果未能解决你的问题,请参考以下文章
Spring数据休息 - 是否存在阻止所有删除操作的全局开关?