DAO和数据传输对象

时间:2013-06-12 13:35:34

标签: java design-patterns dao

所以在数据传输对象中应该只有setter和getters。 但是,如何处理从数据传输对象中插入和删除对象呢?

public class dto{

setters and getters...
..
..

public void delete(){
CustomreDao.delete(this.ID);
}

}

是否会违反DAO模式本身?

提前致谢。

4 个答案:

答案 0 :(得分:2)

问问自己:“更新DAO的删除方法有多难?”如果您有很多DTO并且突然需要更改DAO,那么您刚刚为自己创建了很多工作。

将DTO连接到DAO的责任保留在其他地方,您可以从一个点控制交互。

答案 1 :(得分:2)

这是OO语言的设计原则。根据{{​​3}},每个班级应该只有一个责任。 DTO类的职责是存储数据以用于传输目的。它不应该像你在你的例子中那样有任何行为。

答案 2 :(得分:1)

数据传输对象只是用于在层和层之间传输数据的数据容器。它主要包含属性,甚至可以使用没有getter和setter的公共属性.Data传输对象不包含任何业务逻辑。

除了存储和检索自己的数据(访问者和变更器)之外,DTO没有任何行为。

答案 3 :(得分:1)

我认为答案是肯定的 - 这是针对DAO模式的。

数据访问对象模式是关于封装对对象存储的访问。

您甚至根本不能使用数据传输对象。

你在谈论什么 - 在业务对象本身拥有方法是我更喜欢的Active Record模式。

您甚至可以使用这两种方法 - 例如,使用CustomerDao作为通过数据库实现数据访问的方式,但使用ActiveRecord方便界面:

customer.save();
anotherCustomer = Customer.find(id);

这些方法可以在内部使用CustomerDao。

我相信DTO使用不同的复杂框架,如果你可以避免使用它 - 你可以直接去没有额外的DTO层。