问题标签 [domain-object]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
101 浏览

grails - 域对象中的分组约束

有没有办法对域对象约束进行分组?像这样的东西:

富域插件为非域对象执行此操作...我想为域对象执行此操作。

0 投票
2 回答
3262 浏览

c# - AutoMapper 将源对象上的单个列表映射到目标对象上的两个列表

我正在尝试使用 AutoMapper 从包含对象列表的域对象进行映射,其中我有一个布尔属性,我想使用 AutoMapper 用来将该列表拆分为目标对象上的两个目标的属性.

我的基本域看起来像这样(来源)

所以我的来源将是一个IList<Article>

我的观点看起来像这样(目的地)

通缉映射

其中 ActiveArticles 仅包含具有“IsActive=true”的文章,反之亦然用于 InactiveArticles。

希望你们中的一个人可以帮助我开始做这种映射,我会发现它非常有用。

提前致谢。

0 投票
1 回答
1925 浏览

php - 数据映射器应该如何返回域对象?

在我的模型层中,我有数据映射器、域对象和“服务”(位于模型层之外)。我选择实现 DomainObjectFactory 和 DataMapperFactory,这让我陷入了 DM<->DO 关系。理想情况下,数据映射器将为执行“get”/“read”的每个方法返回相关域对象的实例(或实例数组),但数据映射器无权访问域对象工厂。

如果没有 DM 和 DO 上的工厂模式,自动加载器可以在 DM 中接管,以便可以创建 DO 的实例。但是,这是如何通过工厂实现的呢?

我能想到的一种可能的解决方案是将相关域对象的实例传递给数据映射器方法,例如:

这个选项看起来很脏,但它适用于单个 get 方法。然而,在处理返回域对象数组时,它在语义上脱轨了,所以显然这不是实现这一目标的最佳方法......另一个选择是允许数据映射器访问域对象工厂,但这会变成大规模的 LOD/SRP 违规。

简而言之: 数据映射器如何访问域对象工厂才能返回域对象?

0 投票
1 回答
372 浏览

php - 如何在数据库操作之前验证域对象数据?

我将使用一个抽象(简单)的示例来说明问题:CarDomainObject,如下:(示例mysql数据类型列在成员旁边)

假设我们要在数据库中插入一辆新车,所以我们设置一些值:

现在未设置的值仍然是NULL,这对于该isDirty()方法很有效。此模式不适用于将对象(已像上面那样初始化,只有某些值)插入数据库时​​,其中NULL可能不是列的有效值。

所以,我的问题是:我们如何验证域对象中的每个数据片段是否已准备好插入数据库?我看到它的方式有几个选项:

  1. 如果我们对成员变量使用默认值(0对于 int、''对于 varchar 等),那么isDirty()会变得更加复杂,因为空值检查是不够的。但是,检查是否能够插入数据变得微不足道,因为可以毫无问题地插入默认值

  2. 如果我们坚持使用NULL默认值,那么isDirty()保持相当简单,但确保数据为数据库做好准备变得复杂。

  3. 单独验证每个变量,这取决于 DO 会很快变得丑陋。

  4. 在 MySQL 中使用默认值 - 对我来说不是一个真正的选项,但通常是一个有效的选项

0 投票
2 回答
365 浏览

java - Java - Spring - 搜索域对象

我有一个控制器,它使用 Spring 自动将 HTTP 请求参数映射到业务域对象。我将域对象中的字段数据保存到数据库中。

我有另一个控制器需要支持搜索与域对象相关的任何字段组合。对于某些字段(例如日期字段),我需要允许在一个范围内进行搜索。所以,我不能重用域对象,因为它只有一个日期字段。

例如,我有一个带有日期字段的报告域对象。但是,搜索需要一个“来自”报告日期字段和一个“至”报告日期字段。

我是否应该创建一组仅用于搜索的域对象,这些对象主要反映业务域对象(支持范围搜索的字段除外)?还是有更好的方法来做到这一点?

在此先感谢您的帮助。

0 投票
1 回答
574 浏览

grails - 域对象上的 Class.forName newInstance 不是来自 grails 外部的 GroovyObject

我有一个已编译的 grails 项目,并且从一个单独的 groovy 项目中,我反射性地加载了一个域类,如下所示

当从 grails 外部运行时(在我单独的 groovy 项目中),该对象不会被识别为 GroovyObject。

因为我是从 grails 外部运行的,所以我认为 groovy 会像对待任何其他类一样对待域类(并且通过查看类文件,它确实实现了 GroovyObject)。

我最好的猜测是它与 grails 如何编译域对象有关,但我不确定这里发生了什么。

请注意,这与为什么 Class.forName 不能在 grails 域类上工作有关,但不一样。

0 投票
1 回答
141 浏览

c# - wcf 服务响应中返回的对象,它们是什么?

我正在开发一个 MVC4 应用程序,它与一组 WCF 服务通信以检索数据。我使用 svcutil 从端点生成服务引用。

服务操作接受请求对象并返回响应对象。在这些对象中是“实体”。例如,getproduct 操作返回一个 getproductresponse 对象,该对象具有名为 Product 的属性,该属性是“Product”类型。

我的问题是,“产品”对象、实体、poco 还是域对象?我想创建包含所有此类对象的类库,但不确定应该调用什么。

0 投票
1 回答
1199 浏览

php - 如何在 PHP 中创建成功的域对象工厂

我正在摆弄一个 MVC 框架,我偶然发现了一个我不知道如何解决的问题。

我想为DomainObjectFactory我的应用程序的模型层创建一个,但是,每个域对象都会有一组不同的参数,例如:

  • 人员 - $id、$name、$age。
  • 帖子 - $id、$author、$title、$content、$comments
  • 评论 - $id, $author, $content

等等。我怎样才能轻松地告诉我的工厂我需要什么样的对象?

我想出了几个选择:

  • 传递一个数组——我不喜欢这个,因为你不能依赖构造函数的契约来告诉对象他的工作需要什么。
  • 制作DomainObjectFactory一个接口,并制作具体的类 - 有问题,因为要制作大量的工厂!
  • 使用反射 - 服务定位器多吗?我不知道,在我看来就是这样。

我可以在这里使用一个有用的设计模式吗?还是其他一些聪明的解决方案?

0 投票
1 回答
75 浏览

php - 我应该在模型中使用“加入”还是调用其他模型

我正在学习 OOPHP,我正在寻找一些“最佳实践”的建议。

对于关系数据库,许多表中显然存在外键。当我为我的站点创建模型时,我试图确定在模型中进行 JOIN 查询是否更好,或者让一个模型调用另一个模型?

调用其他模型似乎使代码更加模块化。无论是在另一个表上还是在另一个模型上,这两种方式似乎都会产生依赖关系。

如果我采用“调用其他模型”的方法,我似乎遇到了另一个问题:无限循环。这是我遇到的例子。我有 2 张桌子,person并且school. 每个person人都有一个最喜欢的学校,用 . 表示schoolId。每个school都有一个principal,那就是一个personId

person行映射到的对象在其构造函数中接受对象school,但school学校行映射到的person对象在其构造函数中接受对象。

根据我的发现,延迟加载似乎是解决方案,但是(我可能是错的)如果我这样做,我似乎不能使用 PHP 的类型提示。

(我猜很多人会向我推荐像 Doctrine 这样的 ORM 工具,这是我将来肯定会研究的东西。我现在正在避免它,因为它被认为是陡峭的学习曲线,而且因为我觉得我更了解这些工具以后如果我自己尝试一次)

0 投票
1 回答
477 浏览

java - Riak-Java 无法从 Scala 中的 MapReduce 查询反序列化域对象?

对简单存储桶执行 MapReduce 查询。出于某种原因,我从杰克逊那里得到了一个例外:

这是我正在执行的 MapReduce 查询:

现在,如果我使用它调用 JSON,getResultRaw()它会返回一个 JSON 字符串,其中不包含任何值,只包含键:

那么我在这里俯瞰什么?我需要调用某种域转换器还是 MapReduce 查询本身的问题?

编辑

如果有帮助,这就是我IRiakObjects在 Riak 中的存储方式: