2017-03-16 25 views
2

阅读有关在DAO层中使用Java泛型,我有一个怀疑应用于春天的数据存储库。我的意思是,随着春天的数据仓库,你有这样的事情:春季数据存储库和DAO Java泛型

public interface OrderRepository extends CrudRepository<Order,OrderPK>{ 

    } 

但是,如果我有其他10个实体,我要创建10个接口类似上面执行CRUD操作等等,我觉得这不是很有伸缩性。 Java泛型和DAO是关于创建一个接口和一个实现,并重用此实体,但与Spring Data存储库,我必须为每个实体创建一个接口,所以... ...

回答

2

你没有真正说明一个问题,所以我只需加上

这是真的吗?如果是这样,为什么?

,并回答它:

  1. 是的,这是(几乎)是正确的。几乎是因为您不应该为每个实体创建一个存储库,而应该为每个聚合根目录创建一个存储库。请参阅

  2. Spring Data Repositories提供了Spring Data需要知道的各种功能,它处理的是哪个实体。例如,查询方法需要知道实体的属性,以便将方法名称转换为基于JPA的查询。因此,您必须在某些时刻将信息传递给Spring Data,并且还必须传递信息,哪些实体应该被视为聚合根。你这样做的方式是通过指定接口。

你真的需要吗?那么如果你想要的只是通用的Crud功能,那么你可以通过JPA直接获得。但是如果你想要查询方法,分页,简单的本地查询和更多的Spring Data是避免大量锅炉代码的好方法。

请注意,我有偏差