标签: value-objects

我的Hibernate映射中的值对象或实体对象?

我正在尝试设计一个非常简单的应用程序,并让自己对Hibernate对实体和值对象的定义感到困惑(如Java Persistence with Hibernate的第4章中所定义).

我所拥有的是一个与客户合作的应用程序,可以下订单(一对多关系).这些订单中的每一个都有许多订单行(也是一对多).现在,我认为客户有身份(客户编号),订单(订单编号)也是如此,因此他们是实体对象?我的困惑在于订单行.

订单行包含数量,产品编号和价格.如果订单行没有它的顺序就不能存在,并且它没有自己的标识,因此我将其视为一个值对象.但我不能将订单行作为订单表的一部分,因为订单与订单行之间存在一对多的关系.一对多关系如何与值对象的定义一起使用?来自Hibernate的书:

"值类型的对象没有数据库标识;它属于实体实例,其持久状态嵌入在拥有实体的表行中.值类型没有标识符或标识符属性"

如果有人能解决我的困惑,我会非常感激:)

orm entity hibernate one-to-many value-objects

4
推荐指数
1
解决办法
7648
查看次数

用值对象链接的方法

在值对象上使用方法链接模式是否可接受/良好实践(比如,返回一个新对象而不是这个)?是否存在实施此解决方案的案例?

我想不出任何弊端,但我想听听你的观点.

design-patterns method-chaining value-objects

4
推荐指数
1
解决办法
1442
查看次数

Value Object和AS3中的泛型类之间有什么不同?

我不明白ActionScript3中的值对象和类之间在结构上有什么不同.

如果您决定将其称为一个类,那么任何类都可以成为VO吗?

谢谢.

actionscript-3 value-objects

4
推荐指数
1
解决办法
3285
查看次数

这些是同义词,彼此的子集还是完全不同?

问题标题中提到的概念在某种程度上是同义词吗?主要差异在哪里(背景,结构,......)可以被视为另一个的子集?以下是维基百科的一些简要定义.

POJO(Plain Old Java Object) 维基百科

在计算软件中,POJO是Plain Old Java Object的首字母缩写.该名称用于强调给定对象是普通Java对象,而不是特殊对象,特别是不是Enterprise JavaBean.该术语由Martin Fowler,Rebecca Parsons和Josh MacKenzie于2000年9月创造:

"We wondered why people were so against using regular objects in their
 systems and concluded that it was
 because simple objects lacked a fancy
 name. So we gave them one, and it's
 caught on very nicely."
Run Code Online (Sandbox Code Playgroud)

Java Bean 维基百科

JavaBeans是Java的可重用软件组件,可以在构建器工具中以可视方式进行操作.实际上,它们是用符合特定约定的Java编程语言编写的类.它们用于将许多对象封装到单个对象(bean)中,以便它们可以作为单个bean对象而不是作为多个单独对象传递.JavaBean是一个可序列化的Java对象,具有一个无效的构造函数,并允许使用getter和setter方法访问属性.

价值对象 维基百科

数据传输对象(DTO),以前称为值对象或VO,是用于在软件应用程序子系统之间传输数据的设计模式.DTO通常与数据访问对象结合使用,以从数据库中检索数据.

商业对象 维基百科

业务对象是一种可理解的实体,是n层面向对象计算机程序中业务层内的一个actor.

有关:

DTO,VO,POJO,JavaBeans之间的区别? JavaBean和POJO有什么区别? DDD:实体和价值对象之间的差异有什么用?

java business-objects pojo javabeans value-objects

4
推荐指数
1
解决办法
408
查看次数

所有不可变对象都可以重用吗?

从有效的Java书中可以看出," 如果一个对象是不可变的,那么它总是可以被重用 ".

String s = "shane";
String p = "shane";
Run Code Online (Sandbox Code Playgroud)

此版本使用a single String instance,而不是每次执行时都创建一个新版本.此外,保证对象将被在同一虚拟机中运行的任何其他代码重用,这些代码恰好包含相同的字符串文字.

下面的最终课程也是不可改变的呢?点对象可以重复使用吗?

public final class Point {
  private final int x, y;

  public Point(int x, int y) {
   this.x = x;
   this.y = y;
  }

  public int getX() { return x; }
  public int getY() { return y;
 }
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供一个上面的例子immutable class,它的对象/实例可以重复使用吗?我只是对可重用性如何发生感到困惑?

我能够StringIntegerClasses 相关联,但不能与用户定义的类相关联.

java oop immutability value-objects

4
推荐指数
1
解决办法
774
查看次数

DDD - 共享或复制要在两个聚合根之间使用的值对象?

如果我有一个付款价值对象,它可以由两个不同的聚合根共享吗?或者我应该复制它?

两种选择都错了!

design-patterns domain-driven-design dry aggregateroot value-objects

4
推荐指数
1
解决办法
988
查看次数

DTO 是贫血模型/贫血值对象吗?

贫血模型是没有...的模型

“贫乏域模型是使用软件域模型,其中域对象包含很少或不包含业务逻辑(验证、计算、业务规则等)。”

DTO 是一种缺乏业务逻辑的贫血模型吗?再说一次,一个没有业务逻辑的 balie 对象?

domain-driven-design dto value-objects anemic-domain-model

4
推荐指数
1
解决办法
1243
查看次数

标准值类型作为 DDD 中的 ValueObjects?

在对具有实体和值对象的域进行建模时,将“基本”值类型与定义好的值对象一起生成是否有意义?

例如,我可以有一个值对象 EmailAddress 或 ProductName。但是仅将 String 作为值对象呢?它是否出于任何充分的理由违反了任何已知的原则?我真正想知道的是,我是否应该/可以将所有可能的属性值定义为值对象,包括 string、bool、int 等。这是错误的还是只是做得很远?不知何故,我觉得我更喜欢真正明确地表达任何具有某种价值的“事物”,而不是留下任何可以解释的东西。你怎么认为?大师们对此有何看法?


我偶然发现的一个参考

用适当的值对象替换常见的原语(例如字符串)通常是个好主意。虽然我可以将电话号码表示为字符串,但转换为电话号码对象会使变量和参数更加明确(在语言支持时进行类型检查)、验证的自然焦点,并避免不适用的行为(例如对整数 ID 号)。

domain-driven-design value-objects

4
推荐指数
1
解决办法
1270
查看次数

实体框架核心2.1-拥有的类型和嵌套值对象

我正在学习DDD,并且当前正在使用的教程是使用NHibernate实现的,但是由于缺乏经验,我决定使用EF Core 2.1来完成本课程。

但是,我目前对以下内容有些困惑:我有三个类Customer,它们是一个实体和两个值对象(CustomerStatus在其中的值对象ExpirationDate)-像这样:

public class Customer : Entity
{
    //... constructor, other properties and behavior omitted for the sake of simplicity
    public CustomerStatus Status { get; set; }
}

public class CustomerStatus : ValueObject<CustomerStatus>
{
    // customer status is enum containing two values (Regular,Advanced)
    public CustomerStatusType Type { get; }
    public ExpirationDate ExpirationDate { get; }
}

public class ExpirationDate : ValueObject<ExpirationDate>
{
    //... constructor, other properties and behavior omitted for the sake …
Run Code Online (Sandbox Code Playgroud)

c# domain-driven-design value-objects entity-framework-core-2.1 owned-types

4
推荐指数
1
解决办法
1982
查看次数

领域驱动设计可以将聚合根作为值对象吗

我和我的大学正在讨论领域驱动设计背景下的价值对象和实体。这有点理论化,所以可能不太容易回答。

第一个问题:聚合根可以是值对象吗?

第二个问题:在下图中你可以看到一个领域模型。它包含聚合根和相关的值对象,其中包含聚合根的 ID。

领域模型图

它们是实体还是价值对象?

他们有哪些身份概念?

聚合体的成员具有哪种身份概念?

文章链接:https://www.mirkosertic.de/blog/2013/04/domain-driven-design-example/

谢谢你的帮助

entity domain-driven-design aggregateroot value-objects

3
推荐指数
1
解决办法
2550
查看次数