我们的Web项目使用spring3,Jpa(休眠)。
为了保存CRUD和其他常用方法,我们制作了Spring JpaRepository的存储库子类。
有时我只是将存储库注入Controller,这对于那些简单(或没有)业务逻辑只读数据访问很方便。例如在视图中列出实体类型的所有对象...我知道所有这些都应该在具有事务范围的服务层中完成,但这非常方便。
现在有一个规则:控制器层必须通过服务访问数据层。不允许将存储库注入Controller。
例如:
我有一个实体:Country.java
我有interface CountryRepository extends JpaRepository<Country, Long>
我还有CountryService和CountryServiceImpl,它注入了countryRepository。然后我必须创建findAll,findOne,count,findAll(带排序)....方法,这些实现只不过是return countryRepository.findAll() countryRepository.findOne(id) countryRepository.count()...
对于每个实体,我必须一次又一次地做同样的事情......
服务层是否有可能使用通用方法保存这些方法?
答案 0 :(得分:2)
仅公开应用程序真正使用的服务。我怀疑你需要为每个实体findAll
或count
。
这些方法的实现非常简单这一事实是一件好事:实现和测试它们没有任何困难。如果它们变得更加复杂,并且需要多个存储库方法调用和一些业务逻辑,那么您将很乐意只需修改方法,而不是更改所有设计。