【问题标题】:How to hide spring data repository functions in service class?如何在服务类中隐藏spring数据存储库功能?
【发布时间】:2016-09-11 21:18:43
【问题描述】:

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

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

任何黑客?

【问题讨论】:

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


    【解决方案1】:

    如果您不想要来自 JpaRepositoryCrudRepository 的方法,请不要扩展它们,而只需使用 Repository。拥有像

    这样的存储库接口是非常好的
    MyVeryLimitedRepository extends Repository<User, Long> {
         User findByName(String name);
    }
    

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

    【讨论】:

      【解决方案2】:

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

      通过在服务类中实现 DAO 模式

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

      2. 您可以自定义编码您的 DAO 层以仅向服务层公开自定义方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 2012-09-23
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        相关资源
        最近更新 更多