以下是我对这两个术语的定义,但我不确定它是否完整:
持久对象是域模型中类的实例 表示从数据库中提取的一些信息。一个 transient object 是域模型中类的实例,它在内存中创建
a)我假设术语 persistent 和 transient 仅用于域模型中的对象,但不适用于域模型之外的业务层中的对象?
b)我们是否也将这两个术语用于数据传输对象?
c)这两个术语是否也用于值对象?
谢谢
答案 0 :(得分:17)
持久意味着对象已保存到数据库,而瞬态意味着它尚未保存。因此,例如,当您从存储库获取实体时,该实体是持久的。当您创建一个新实体时,它是暂时的,直到持久化。
a)这些术语与ORM的关系比DDD更多,因此它们适用于任何非DDD的术语。在DDD中,持久化/瞬态应用于实体和聚合根,因为这些是与存储库一起持久化的对象。
b)不,DTO旨在跨越流程边界传输数据,并且没有您希望持久保存到数据库的对象的生命周期。
c)否,因为值对象没有标识,只能作为实体或聚合根的一部分保留。值对象只是一个值,类似1的排序是一个整数值,并且说它是否持久是没有意义的。
答案 1 :(得分:0)
瞬态意味着未处理的对象或实例化或新创建的对象。一旦对象正在提交任何其他操作,则对象状态已知为持久性
答案 2 :(得分:0)
对象通常具有两个部分:状态(值)和行为(操作)。它可以具有复杂的数据结构以及程序员定义的特定操作。9OOPL中的对象仅在程序执行期间存在;因此,它们被称为瞬态对象。 OO数据库可以扩展对象的存在,以便将它们永久存储在数据库中,因此,这些对象成为持久对象,它们存在于程序终止之外,以后可以检索并由其他程序共享。换句话说,OO数据库将持久性对象永久存储在辅助存储中,并允许在多个程序和应用程序之间共享这些对象。