Domain driven design 持久对象和瞬态对象-对术语感到困惑

Domain driven design 持久对象和瞬态对象-对术语感到困惑,domain-driven-design,persistence,transient,Domain Driven Design,Persistence,Transient,以下是我对这两个术语的定义,但我不确定它是否完整: 持久对象是域模型中类的实例 表示从数据库中提取的某些信息。A. 瞬态对象是在内存中创建的域模型中的类的实例 a) 我假设术语persistent和transient仅用于域模型中的对象,而不用于位于域模型之外的业务层中的对象 b) 我们是否也对数据传输对象使用这两个术语 c) 这两个术语是否也用于值对象 谢谢持久表示对象已保存到数据库中,而暂时表示对象尚未保存。例如,当您从存储库中获取一个实体时,该实体是持久的。创建新实体时,它是暂时的,直到持

以下是我对这两个术语的定义,但我不确定它是否完整:

持久对象是域模型中类的实例 表示从数据库中提取的某些信息。A. 瞬态对象是在内存中创建的域模型中的类的实例

a) 我假设术语persistent和transient仅用于域模型中的对象,而不用于位于域模型之外的业务层中的对象

b) 我们是否也对数据传输对象使用这两个术语

c) 这两个术语是否也用于值对象


谢谢

持久表示对象已保存到数据库中,而暂时表示对象尚未保存。例如,当您从存储库中获取一个实体时,该实体是持久的。创建新实体时,它是暂时的,直到持久化为止

a) 这些术语与ORMs的关联性比与DDD的关联性更大,因此它们适用于任何非DDD的内容。在DDD中,持久化/瞬态应用于实体和聚合根,因为这些是存储库中持久化的对象

b) 不,DTO的设计目的是跨进程边界传输数据,并且没有希望持久化到数据库的对象的生命周期


c) 否,因为值对象没有标识,只能作为实体或聚合根的一部分进行持久化。一个value对象只是一个值,sort like 1是一个整数值,谈论它是否被持久化是没有意义的

瞬态是指未处理的对象或实例化或新创建的对象。一旦对象被提交用于除对象状态之外的任何其他操作,即已知一个持久对象,该对象通常有两个组件:状态(值)和行为(操作)。它可以具有复杂的数据结构以及程序员定义的特定操作。OOPL中的9个对象仅在程序执行期间存在;因此,它们被称为瞬态对象。OO数据库可以扩展对象的存在,使其永久存储在数据库中,因此对象成为持久对象,存在于程序终止之后,可以稍后检索并由其他程序共享。换句话说,OO数据库将永久性对象存储在辅助存储中,并允许在多个程序和应用程序之间共享这些对象。

您回答了我的问题,因此我将在一天内将其标记为已回答。但如果您能抽出一些时间来帮助我:“不,因为值对象没有标识,只能作为实体或聚合根的一部分进行持久化。”即使值对象有自己的数据库表,我们也不使用这两个术语来表示它。ORM根据其标识符(或版本)的值来确定对象的持久/暂时状态。由于值对象没有ID,ORM不会对值对象进行确定-所有值对象都通过根实体持久化。如果直接持久化值对象,则它们不是真正的值对象。