Java Transfer Object,它是什么?

时间:2013-06-09 09:52:57

标签: java java-ee design-patterns dao

直接来自this oracle article关于J2EE DAO模式:

一切都非常清楚,但转移对象“参与者”(他们称之为)。

在这里,我引用了一些我想要更多见解的内容(特别是对于现实生活中的一个例子(一个简单的例子))。

  

TransferObject

     

这表示用作数据载体的传输对象。该   DataAccessObject可以使用Transfer Object将数据返回给   客户。 DataAccessObject还可以从客户端接收数据   在传输对象中更新数据源中的数据。

我正在尝试将此模式用作练习(作为OCPJP的学生,它需要了解DAO模式)。到目前为止,我有我的DataSource(mysql数据库),我的业务对象(JavaBean,名为Person)和我的DAO对象在数据库和JavaBean(Person)之间正确连接。

那么究竟什么是转移对象?

修改 从第一个回复中我理解,实际上我知道什么是转移对象,但我不知道什么是商业对象......所以问题仍然与商业对象相同。不适用于转移对象。

提前致谢并抱歉。

提前致谢。

3 个答案:

答案 0 :(得分:4)

传输对象是一个带字段和无逻辑的简单类。它们是可序列化 POJO(普通旧Java对象)并具有访问字段(getter,setter)来访问字段。它们被称为转移,因为它们用于在层之间传递数据或粗略地说组参数到服务方法调用,它们不需要匹配业务对象

实施例

UserLogin { // just fields that are needed to login, not a User business object
    String name;
    String password;
}

LoginService { // sample sarvice that check passwords
    boolean Login(UserLogin userLogin) {...}
}

传输对象与其他类似结构的类的区别在于它们的使用方式(传输数据),而不是它们的构建方式(字段和访问器)。

答案 1 :(得分:2)

它会将数据从一个层传输到另一个层。您可以将其称为DTO(DATA TRANSFER OBJECT) or VO(VALUE OBJECT)`。

例如,如果我们填写表单包含用户详细信息以保存在数据库中。第一个值将转到操作类。然后我需要通过service将它发送到DAO。在操作类中我将设置所有细节到一个类,然后在服务类

中访问它

答案 2 :(得分:2)

<强> DTO

除了存储和检索自己的数据(访问者和变更器)之外,DTO没有任何行为。 DTO是简单的对象,不应包含任何需要测试的业务逻辑。

DTO使用

  

案例1:如果域对象很大,则使用DTO,但您只需要一个   它的一些属性!对于大型域对象,其中包含客户端   可视化,更改或仅显示其一些属性。在这   我们建议使用表示法:prefixDTO。这是对象   客户用来做它的作品。该服务获得域   对象,创建DTO并将其返回。如果这个DTO用于   向导或用户可以输入内容的公式   设置值,这意味着您必须存储键入的值   信息到数据库,然后你应该使用添加到DTO   新对象叫:prefixDTOData。为什么?因为否则我们   会强制将属性写入数据库的服务   迭代整个域对象(记住域对象   在写下来之前寻找和比较变化是巨大的   数据库中。

     

案例2:如果客户必须显示来自不同的字段,请使用DTO   域对象。在这种特殊情况下,你可以考虑把所有的   已经在数据库中创建DTO的所需属性   传递给服务器的服务器进入客户端。该   客户端为案例1创建analoque,前缀为DCTOData,并将其返回给   服务。原因与案例1中解释的相同。