Som*_*kar 15 domain-driven-design ddd-repositories spring-data spring-data-jpa
DDD指定每个聚合的存储库,但是当采用Spring Data JPA时,我们只有在声明每个实体的接口时才能利用这些优势.如何解决阻抗不匹配问题?
我希望尝试封装在聚合存储库中的存储库接口,这是一个好的解决方案还是更好的可用解决方案?
到给定的一个例子:Customer是聚合根和实体等Demographics,Identification,AssetSummary等等,其中每个实体可以从具有自己的资源库接口受益.没有违反DDD的最佳方法是什么?
Oli*_*ohm 19
...,但是当我们接受Spring Data JPA时,我们只有在每个实体声明接口时才能利用这些好处......
这是错的,我想知道你从哪里得到这种印象(随意评论).Spring Data存储库期望与您的域模型设计完全相同:您可以在域模型中识别聚合,并仅为这些聚合创建存储库接口.
我认为您需要做的就是将DDD概念应用于您的域模型.只是不要为非聚合根的实体声明存储库接口.事实上,如果你声明了这些,你基本上打破了聚合的概念,因为实际的根不能再控制业务约束,因为其他实体可以通过为它们定义的存储库接口来操作,即不使用聚合根.
在此Spring Data示例中找到正确应用此示例.在它中,Order是一个聚合根,LineItem只是一个普通的实体.这同样适用于Customer(root)和Address(普通实体).存储库接口仅存在于聚合根.
事实上,这种特殊关系是使Spring Data REST等模块首先运行的基本原则.它仅为聚合根公开HTTP资源,在创建的表示中嵌入普通实体,并创建指向其他聚合的链接.
| 归档时间: |
|
| 查看次数: |
2343 次 |
| 最近记录: |