DTO和DAO概念和MVC [关闭]


133

1)为什么要使用DTODAO,以及何时应使用它们。我正在开发GUIJava软件来处理插入,编辑,删除数据。但我很努力区分DTO/DAOModelViewController(MVC)结构?它们是否相似,因此通过Java与数据库交互时最好使用GUI

2)我真正好奇的一件事是viewController在一个课堂上上课是否是一种好习惯。如果我们考虑过Netbeans,您可以创建GUI框架类并将类似JButton的组件添加到框架上,双击该按钮将带您到actionListener方法(控制器),该方法似乎位于要向用户显示数据的框架中(查看) 。所以他们在同一个班上。那是否完全违背了这个概念?

就是我在说的

将视图和控制器放在一类中的不良做法?


@RomanC有一个包含事件(eventId,name,date.etc)的数据库表,因此DTO和MVC是相同还是不同?
Hoody

在数据库上,您不是DTO而是数据库对象。
罗马C

Java类中的@RomanC抱歉,使用DTO / DAO结构还是应该使用MVC?有什么区别
Hoody

阅读此书确认差异
Roman C

您是否在第二个定义中阅读了有关数据库的信息?
罗马C

Answers:


269

DTOData Transfer Object的缩写,因此它用于在应用程序的类和模块之间传输数据。

  • DTO 应该只包含数据,getter,setter和构造函数的私有字段。
  • DTO 建议不要向此类添加业务逻辑方法,但是可以添加一些util方法。

DAOData Access Object的缩写,因此它应该封装用于在数据存储(数据库,文件系统等)中检索,保存和更新数据的逻辑。

这是DAO和DTO接口外观的示例:

interface PersonDTO {
    String getName();
    void setName(String name);
    //.....
}

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}

MVC是更广泛的模式。DTO / DAO将是您在MVC模式中的模型。
它告诉您如何组织整个应用程序,而不仅仅是负责数据检索的部分。

至于第二个问题,如果您的应用程序很小,那是完全可以的,但是,如果您要遵循MVC模式,最好有一个单独的控制器,该控制器在单独的类中包含框架的业务逻辑并从事件处理程序向此控制器分发消息。
这会将您的业务逻辑与视图分开。


2
可能我误解了这个问题。
Petr

4
我不确定“独立控制器”是什么意思。根据我的阅读,MVC中的控制器应该尽可能的紧凑,并且您的业务逻辑应该封装在模型中。
保罗·卡尔顿

4
使用DTO来连接对象模型是一种可怕的做法。void save(PersonDTO人)是纯癌症。

3
当我们拥有POJO之类的类对象时,为什么需要DTO?他们俩都一样吗?
巴尔加夫

3
@Bhargav DTO用于返回多个实体(POJO)的组合结果或来自实体的有限资源。
TheCoder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.