直接来自this oracle article关于J2EE DAO模式:
一切都非常清楚,但转移对象“参与者”(他们称之为)。
在这里,我引用了一些我想要更多见解的内容(特别是对于现实生活中的一个例子(一个简单的例子))。
TransferObject
这表示用作数据载体的传输对象。该 DataAccessObject可以使用Transfer Object将数据返回给 客户。 DataAccessObject还可以从客户端接收数据 在传输对象中更新数据源中的数据。
我正在尝试将此模式用作练习(作为OCPJP的学生,它需要了解DAO模式)。到目前为止,我有我的DataSource(mysql数据库),我的业务对象(JavaBean,名为Person)和我的DAO对象在数据库和JavaBean(Person)之间正确连接。
那么究竟什么是转移对象?
修改 从第一个回复中我理解,实际上我知道什么是转移对象,但我不知道什么是商业对象......所以问题仍然与商业对象相同。不适用于转移对象。
提前致谢并抱歉。
提前致谢。
答案 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中解释的相同。