问题标签 [data-transfer-objects]

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 回答
1967 浏览

c# - 使用来自 Web 服务的数据传输对象

我正在尝试编写一个使用 web 服务和 DTO 检索客户信息的 C# windows 应用程序。

我必须使用提供的使用 DTO(数据传输对象)的网络服务

在 Soap UI 中,请求 XML 看起来像

DTO 返回是

现在,在 Visual Studio 中添加 Web 引用后,我可以调用实例化 Web 服务并使用以下内容传递成员 ID。

问题是如何获取 DTO 返回的数据,以便将其写入表单上的适当文本字段?

使用 Visual Studio 时,我希望看到类似 getCustomerInfo.Address1 的内容,但由于数据位于 DTO 中,因此我无法使用此方法看到返回。如果我实例化 getCustomerResponse DTO,我确实会看到 getCustomerResponse.Address1 但我无法将值 inCustomerNumber 传递给它,因为它不接受输入参数。

Dataflow = 使用 customerNumber 调用 getCustomer 并返回 getCustomerResponse DTO 中的所有值。

我的服务代码如下

对于它创建的 DTO

我必须使用的 WSDL

0 投票
1 回答
3125 浏览

java - CQRS中JPA实体与DTO的映射

我希望在我正在从事的项目中使用 CQRS,但是我目前正在努力寻找实现 CQRS 查询端的最佳方法。根据我有限的理解,有一个 Thin Data Layer(有时称为 Thin Read Layer),它查询数据库并返回一个 DTO 以及应用程序的 UI 层使用的查询结果。

由于这是一个 Java EE 应用程序,我正在开发 Thin Data Layer 使用 JPA 来查询数据库,使用EntityManager.createNamedQuery该数据库返回一个包含结果的实体,然后我将其映射到 DTO。

鉴于应用程序的查询端应该是“只读的”,DTO 包含每个属性的 getter 但不包含 setter,以及用于在创建时填充属性的构造函数。

对于一个简单的查询,我可以使用构造函数将实体中的值手动映射到 DTO,但是这对于更复杂的查询是不切实际的,特别是当实体包含需要映射到对应的“一对多”关系时DTO。我已经研究过使用 Dozer 和 ModelMapper 等映射框架,但是它们似乎都依赖于具有设置器的 DTO,并且似乎没有使用构造函数。

下面的代码代表了我创建的两个实体和两个 DTO 的非常简化的视图,以帮助解释这种情况。

我的问题是:

  1. 使用 CQRS 时,DTO 应该只有 getter 和构造函数,还是也可以接受 setter?

  2. 如果 DTO 理想情况下应该只有 getter 和构造函数,那么映射框架是否是填充 DTO 的最佳方式,其中实体返回包含“一对多”关系的复杂结果集?

  3. 有没有可以使用构造函数而不是设置器的映射框架?

0 投票
1 回答
83 浏览

azure - 将大文件传输到 BizSpark 内的 Azure 帐户

我的公司有一个 BizSpark 帐户,我们需要传输一个大图像文件,以便稍后在我们的网站数据库中使用。该文件大约为 550 GB,我需要将其转移到免费的 BizSpark Azure 帐户之一。我们是 BizSpark 和 Azure 的新手,因此我们将不胜感激任何提示。传输文件的人要求我们向他们提供 FTP 详细信息,例如服务器名称、用户名和密码。

非常感谢。

0 投票
1 回答
96 浏览

inheritance - JAXB 没有按预期编组。DTO 中的对象(超类)为空

经过数小时的尝试和错误,我想在这里询问是否有人可以帮助我解决我的问题。

设想:

  • 使用 Apache CXF 作为 JAX-WS 实现的 Java EE 服务器 (JBoss 7.2)。
  • ServiceA(服务端点)和 ServiceB(扩展服务 A 和服务端点)
  • 三个持久化项目:Common,PersistenceA 依赖于 Common,PersistenceB 依赖于 PersistenceA。
  • 有一个类UUIDIdentified是所有持久性类的超类(它提供 JPA @ID)它在 Projekt Common

ServiceA 类中有一个方法:public List<DTO> getData(UUIDIdentified value);

Server读取一些Objects,这些Objects都是UUIDIdentified的子类型,目的是将Objects打包到DTO中。

DTO 看起来像:

<uuididentified>如果我查看 SOAP 响应,我发现标签中没有数据。我对 JAXB 的理解不是很好,但是据我了解,UUIDIdentified 的“真实”实例及其类型对于 JAXBContext 是未知的。

我可以通过添加@XmlSeeAlso({TypeA.class,TypeB.class})UUIDIdentified课程中来解决这个问题(我认为)。但那是我不能这样做的,因为如果我这样做,Project Common 将取决于 Projects PersistenceA/B。

我该如何解决这个问题。我如何对 JAXB(可能在 xml 配置文件中)说它必须在添加 UUIDIdentified 时将 ClassA/B 添加到 JAXBContext?

我在 SEI 上尝试了一些类似 jaxb.in​​dex 文件、ObjectFactorys、@XmlSeeAlso 的东西,但我不知道这是否是正确的方法。

0 投票
3 回答
1395 浏览

c# - 使用依赖注入在构造函数外部创建类的新实例

我正在尝试一个示例应用程序来测试依赖注入。在使用 DI 之前,我的课堂上有以下方法:

BookDTO 是在另一个项目中定义的数据传输对象。现在我想将我的项目松散地耦合在一起。所以我创建了 IDTOBase 接口并让 BookDTO 实现了这个。我有一个统一容器,我在其中将 BookDTO 类的相关注册到 IDTOBase。

但是我将如何用我原来的方法重写 LINQ 查询呢?什么将取代“new BookDTO()”?

谢谢

0 投票
1 回答
3655 浏览

java - 值对象与数据传输对象

我是其中一个项目的一部分,我们在该项目中生产 java web 服务并发布到服务器。其他一些 java 应用程序正在通过 extjs 使用 Web 服务。

在那个生产者应用程序中,遵循领域驱动设计。我们使用了两种类型的 pojo,域对象和 DTO 对象。这两个类都具有相同的属性变量。而 DTO 类正在实现 Serializable 类。

首先,我们从 db 调用创建 domians 对象,然后将域对象转换为 dtos 并发布在 web 服务中。

现在我想知道拥有这两种类型的对象是一种好习惯吗?为什么 dto 实现了可串行化(一个原因可能是在通过网络调用 web 服务时维护对象的状态——我在网络中找到了这个原因,但我不清楚)?

欢迎任何指向此或专家解释的链接。

提前致谢。

0 投票
2 回答
564 浏览

c# - 验证具有几乎所有相同属性的创建和编辑 DTO

我也有非常相似的 DTO。

它们仅在标识测试资源的一个属性上有所不同。

当我现在创建一个 EditAddTestDTO 并制作

然后我不能把 RequireAttribute 放在它上面,因为它在我没有 TestId 的 Create-Scenario 中不起作用。

你如何解决这个问题?

创建我已有的 2 个 DTO 或 AddEditBaseDTO?

0 投票
0 回答
901 浏览

jquery - JAVASCRIPT 使用 TOUCH 事件从浏览器拖放到桌面?

0 投票
1 回答
579 浏览

php - $form->isValid() 之后的 Symfony 数据转换器

我在理解Symfony的DataTransformers中如何准确处理数据时遇到了麻烦。

我只有一个密码表格。只有一个领域。该字段属于必须在.yml文件中定义的约束的用户实体。

正如预期的那样,验证工作正常。当密码必须从字段中自动编码时,就会出现问题。所以,

还有变压器本身:

这就是正在发生的事情:

该表单应包含 6 到 155 个字符,但$form->isValid()始终为真,因为PasswordHash::createHash($value)将密码编码为 32 个字符。我所期待的是:

表单验证原始密码,如果超过 6 个字符则变为$form->isValid()true,然后在验证后对密码进行编码。

我知道我可以在表单有效时手动编码密码而不使用DataTransformer,但我希望有一种更优雅的方式。

我错了吗?

0 投票
1 回答
17294 浏览

java - 我应该在 DTO 中使用构建器模式吗?

这可能是一个非常主观的问题,但我想知道更多的意见。我用 Spring MVC 构建了一个 Rest API 服务,并实现了 DTO-Domain-Entity 模式。我想知道您对在 DTO 中实现Builder 模式有何看法,例如

根据定义:

Builder 设计模式的目的是将复杂对象的构造与其表示分离。通过这样做,相同的构造过程可以创建不同的表示。

在我的大多数 DTO 案例中(并不是说全部),我没有更复杂的对象来构建,例如这种情况。而且,老实说,如果我们谈论 DTO,我想不出任何构造复杂对象的例子。

有助于使不可变对象更易于使用并增加代码清晰度的模式之一是 Builder 模式。

构建器模式提供对象不变性。然后,我们可以认为 DTO 是服务响应本身,不应更改,因为这是一个响应(至少我是这么想的)


所以你怎么看?我应该对 DTO 使用这种模式吗(鉴于这种情况,可能是大多数情况,不满足复杂对象原则)?