Design patterns orm和java中的DDD实体
我开始阅读E.Evans DDD的第5章,试图了解这些概念的头绪 在ddd的上下文中,什么是实体,什么不是实体,什么是值对象 看看——但这是关于Hibernate的,不是DDD,我问的是DDDDesign patterns orm和java中的DDD实体,design-patterns,domain-driven-design,Design Patterns,Domain Driven Design,我开始阅读E.Evans DDD的第5章,试图了解这些概念的头绪 在ddd的上下文中,什么是实体,什么不是实体,什么是值对象 看看——但这是关于Hibernate的,不是DDD,我问的是DDD 在上面的hibernate示例中,OrderLine是实体,但OrderLine仍然是DDD实体吗 更一般地说,我们能说任何jpa/Hibernate@实体都是DDD实体吗 在我看来,OrderLine是Jpa/Hibernate的一个很好的例子 不是DDD实体的实体,是吗 例如,如果我们使用某个对象数据
寻找所有这些问题的客观答案可能很困难,因为存在多种相互矛盾的解释 一般来说,DDD实体和值对象与ORM实体和值有一些相似之处,但它们是非常不同的概念。两个主要原因是:
- 两者所指的“身份”是不同的。数据库具有与数据库相关的标识,这些标识很少与业务相关标识匹配,尤其是在非规范化时
- ORM和持久性通常是一种技术,与“业务”无关
- DDD实体和值对象是对象而不是数据。我的意思是,它们通常应该符合面向对象的原则,其中之一是对象应该关注行为而不是数据。这通常会导致对其施加完全不同的力
BillingCustomer
和MarketingCustomer
在概念上是不同的,因此它们永远不会相等,即使它们背后的“真正”人是相同的。一般来说,“真实”在软件设计中有不同的含义。我们认为所有的“真实”都是企业的一部分(即无处不在的语言的一部分),即使其中一些甚至大部分不是传统意义上的“真实”。matches()
,或sameCustomer()
,等等HTH.寻找所有这些问题的客观答案可能很困难,因为存在多种相互矛盾的解释 一般来说,DDD实体和值对象与ORM实体和值有一些相似之处,但它们是非常不同的概念。两个主要原因是:
- 两者所指的“身份”是不同的。数据库具有与数据库相关的标识,这些标识很少与业务相关标识匹配,尤其是在非规范化时
- ORM和持久性通常是一种技术,与“业务”无关
- DDD实体和值对象是对象而不是数据。我的意思是,它们通常应该符合面向对象的原则,其中之一是对象应该关注行为而不是数据。这通常会导致对其施加完全不同的力
BillingCustomer
和MarketingCustomer
在概念上是不同的,因此它们永远不会相等,即使它们背后的“真正”人是相同的。一般来说,“真实”在软件设计中有不同的含义。我们认为所有的“真实”都是企业的一部分(即无处不在的语言的一部分),即使其中一些甚至大部分不是传统意义上的“真实”。