如何在GenericDao / JpaRepository中保存服务中的简单CRUD代码?

时间:2011-10-05 09:01:37

标签: java spring jpa repository

我们的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()...

对于每个实体,我必须一次又一次地做同样的事情......

服务层是否有可能使用通用方法保存这些方法?

1 个答案:

答案 0 :(得分:2)

仅公开应用程序真正使用的服务。我怀疑你需要为每个实体findAllcount

这些方法的实现非常简单这一事实是一件好事:实现和测试它们没有任何困难。如果它们变得更加复杂,并且需要多个存储库方法调用和一些业务逻辑,那么您将很乐意只需修改方法,而不是更改所有设计。