问题标签 [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 回答
722 浏览

json - 在 For Get 和 POST 中重用相同的域对象

假设我有一个学生对象

在典型的 Get 请求中,为了获取学生,我将 Student 对象发送给客户端。

在通过添加或删除课程来修改学生对象的 PUT 请求或创建学生记录的 POST 请求的情况下,我只需要从客户端接收 student.id 和课程列表。

我的问题是,我可以在 PUT 或 POST 请求中从客户端发回相同的 Student 对象,而不包括名称或 name=null 吗?或者我应该创建一个将由客户端发送的单独的域对象,例如:

我想我的一般问题是,我们应该在 Rest API 中分离请求和响应对象吗?还是为了代码的可重用性尝试在两个方向上使用相同的域对象?

0 投票
0 回答
66 浏览

php - 我应该使用有限字段查询还是全字段对象?

我一直在尝试将存储库模式合并到我的 PHP 应用程序中,大致遵循这个示例

我正在尝试在以下之间做出决定:

  1. 限制我从数据库中检索的字段
  2. 检索所有这些并将它们存储在域对象中。

我链接的主题中接受的答案显示了实现选项 1的方法。第二个答案显示了为什么检索完整对象可能更好。

就我而言,检索完整对象通常涉及获取 50 到 250 个字段。检索这些对象的数组,这将是很多可能影响应用程序性能的字段。这就是为什么我一直倾向于选择检索哪些字段,因为我通常需要多达 10 个字段来执行常见操作。

如果我采取选择性的方法,那么我将无法使用域对象来存储数据,并且我可能会遇到“第二个答案”提到的问题。

  1. 您最终会在许多查询中得到基本相同的数据。例如,对于用户,您最终会为许多调用编写基本相同的 select *。一个呼叫将获得 10 个字段中的 8 个,一个将获得 10 个字段中的 5 个,一个将获得 10 个字段中的 7 个。为什么不将所有字段都替换为一个获得 10 个字段中的 10 个的呼叫?这不好的原因是重构/测试/模拟是谋杀。
  2. 随着时间的推移,很难对您的代码进行高层次的推理。而不是像“为什么用户这么慢?”这样的陈述。您最终会跟踪一次性查询,因此错误修复往往很小且本地化。
  3. 底层技术真的很难替代。如果您现在将所有内容都存储在 MySQL 中并想迁移到 MongoDB,那么替换 100 个 ad-hoc 调用比替换少数实体要困难得多。

我仍然可以将域对象用于创建更新和删除操作,但读取操作必须按照CQRS 模式存储在普通对象或关联数组中。我目前确实有一些涉及连接的更复杂的查询,如果不进行数据库通常在 1 个查询中处理的额外数据库调用和处理,这些查询很难与域对象一起复制。

考虑到所有这些,对我来说将域对象用于读取操作是否有意义,或者根本没有?我是否缺少域对象可以提供的其他一些优势来帮助解决我所说的问题?

0 投票
3 回答
6694 浏览

java - How to receive customized JSON Object in Spring boot Api post Method

I am trying to receive a JSON object in @RequestBody which is not known to me i.e. the JSON Object could be of any length and data.

Let's say, JSON could be as shown below

And In Spring Boot Api, I have a method to receive that JSON Object.

I have read about Jackson Serialization but still finding solution for this.

Customize the Jackson ObjectMapper

Any help would be much appreciated.

0 投票
1 回答
374 浏览

c# - 如何利用 DTO、领域模型、值对象、

我正在用 c# 设计调度程序的不同层。这将是一个在后台运行的服务,没有 GUI。

这是我的架构基线(当然只是架构的一小部分。

1

我不确定架构方面的“最佳实践”。我一直在阅读 POCO、值对象、DTO、域模型,据我所知,下面介绍的是 DTO 的错误方法。

在我的课程“ScheduleDTP”中,我有几种方法可以对来自数据库的日期进行一些相对复杂的操作。CalculatePriority 是其中一种方法的简化示例

数据库属性:ID、名称、频率、LastRun

操纵属性:优先级

作业管理器的目的是评估所有计划和按需。

据我了解,DTO 应该只包含数据,并在不同层之间传输数据。我也相信这也不应该是 JobManagers 的职责。

我是否应该创建一些不同类型的对象、POCO、Domail 模型……来操作 DTO 中的数据?

我非常感谢有关如何构建不同层或可以引导我走向正确方向的任何帮助

0 投票
1 回答
1009 浏览

php - 域对象和数据映射器应如何在使用 MVC 的身份验证系统的服务类中交互

我正在使用后端的 Slim 3 PHP 和前端的 Angular 创建一个身份验证/登录系统,我试图了解 MVC 中模型层的“域对象”和“数据映射器”部分结构体。我已经阅读了很多关于诸如此类的各种问题的有用答案,从中我了解到模型应该由“域对象”、“数据映射器”和“服务”组成。

但是,我不确定在用户能够注册和登录网站的情况下应该如何构建它。

据我了解,我可以拥有一个具有用户名和密码等属性的用户“域对象”。它还可以具有诸如注册或登录之类的方法来表示业务逻辑。

然后我是否会有一个服务类来创建用户对象的新实例,在其中我会将表单数据传递给对象?那么现在我的用户对象实例会设置用户名和密码值吗?

现在我不确定如何将这些对象属性数据插入数据库。我会使用用户对象注册方法通过将用户名和密码作为参数传递来将数据插入数据库吗?

显然,服务应该是域对象和数据映射器交互的地方,但我不确定如果注册方法在用户域对象中,这将如何工作。

我希望有人可以向我展示一些代码示例,说明服务类中应该包含什么以及域对象和数据映射器之间的交互如何在用户注册和登录的上下文中工作。

注意我不想使用任何框架,我想尝试手动实现一个适当的 MVC 结构,因为我觉得我会学到更多。

到目前为止,我有这个用于注册用户的结构:

我有一个带有方法 registerUser 的 AuthenticationController 来允许用户创建一个帐户:

然后我有 AuthenticationService 类和 registerUser 方法:

稍后我打算将 SQL 放入 AuthenticationRepository 并将 PDO 逻辑放入它自己的类中。此 AuthenticationService 方法还将确保使用 PHP 的内置函数清理用户详细信息。

我不确定提议的 PDO 数据库类或 AuthenticationRepository 是否算作数据映射器。

0 投票
1 回答
615 浏览

domain-driven-design - DDD 命名:域对象

考虑涉及领域驱动设计 (DDD) 的某些类型的对象:实体、值对象、领域事件和领域服务。

其中哪些被认为是域对象?还有其他的抽象名称来封装其中的一个子集吗?

在谈论 DDD 或域模型时,我可以识别出各种有用的抽象:

  • 实体和值对象。我经常发现自己提到“实体或值对象”。最值得注意的是,这些模型是域状态的模型。相比之下,域服务是无状态的,我认为域事件仅反映有关域如何处于当前状态的信息。

  • 实体、值对象和领域事件。这些可能都包含或表示数据,而域服务仅定义行为。

  • 域模型识别的所有对象。能够谈论一般的领域模型的一部分,而不是它之外的概念,这很有用。

有趣的是,甚至 Stack Overflow 的domain-object标签都有一个令人困惑的定义:

域对象是用于处理模型层的域逻辑的对象。这些对象通常模拟现实生活中的真实(或虚拟)项目:Person、Post、Document 等。

最初的定义侧重于“处理领域逻辑”,倾向于“领域模型识别的所有对象”。然后这些示例倾向于“实体和值对象”。

DDD 强调定义明确、明确的无处不在的语言,这是有充分理由的。不应该以身作则吗?:)

0 投票
1 回答
45 浏览

java - 具有可互换持久层的应用程序

在我看到的 95% 的示例中,人们正在向他们的域对象添加@Entity@Document注释。

我想创建一个可以轻松更改持久层的应用程序。应该可以从设置切换SQL DB到 exMongoDB等。

我想让我的域对象完全独立于持久层。

我想过这样的事情: 在此处输入图像描述

Item域对象在哪里。

每个ItemsRepository实现都有它自己的专用持久层对象。对于 SQL,假设是ItemEntity类,对于 MongoItemDocument类。并且每个持久对象都有与域对象的转换。

这样的方法可以接受吗?如果不是,解决该问题的最佳行业模式是什么?