【发布时间】:2020-07-26 08:33:00
【问题描述】:
我一直在努力选择将 JPA 实体作为单独的类而不是域实体在单个有界上下文中使用。我曾面临以下选择
为聚合根/聚合..etc 使用分离的域类和域存储库来包装 Spring JPA 存储库并使用转换器来映射 JPA 实体 仅具有所需数据的域实体
延迟加载即将被放弃,除非映射器/转换器在域存储库中处理此问题,但这是矫枉过正。
保存对象时,可能存在相关的聚合根(一对多关系),后来在复杂的逻辑中,我必须非常注意域实体的状态才能将其传递给域存储库,或者用所有相关数据填充它或简单地映射它(转换器中的另一种方法)而不使用关系数据(级联不适用于 JPA 持久化)
大量重复的代码可以避免这种情况,即使是非常简单的用例
或者使用 JPA 实体作为我的域实体,到目前为止有多个这样的示例/意见
https://github.com/citerus/dddsample-core/tree/Spring_Annotations_Autowire
http://www.javamagazine.mozaicreader.com/MayJune2018/Twitter#&pageSet=50&page=0
Should JPA entities and DDD entities be the same classes?
DDD, domain entities/VO and JPA
How to implement DDD using Spring Crud/Jpa Repository
另一方面,也有这样的意见
Is it a good practice to use JPA entities as domain models?
我的问题,从长远来看,来自经验
- 什么会花费更多的精力和时间?
- 这两种方法都可以作为实践接受吗?
- 两者的优缺点是什么?
【问题讨论】:
标签: spring jpa orm onion-architecture