DTO和DAO概念和MVC

Hoo*_*ody 120 java model-view-controller user-interface swing javabeans

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

2)我真正好奇的一件事是view,Controller在一堂课中是否是一个好习惯.如果我们考虑一下Netbeans,你可以创建GUIFrame Class并JButton在框架上添加组件,双击该按钮会将你带到actionListener方法(Controller),该方法似乎在框架中,数据将显示给用户(View) .所以他们在同一个班级.这完全违背了这个概念吗?

就是我所说的

在一个类中拥有视图和控制器的不良做法?

Pet*_*etr 242

DTO是数据传输对象的缩写,因此它用于在应用程序的类和模块之间传输数据.DTO应该只包含数据,getter,setter和构造函数的私有字段.不建议将业务逻辑方法添加到此类,但可以添加一些util方法.

DAO是数据访问对象的缩写,因此它应该封装用于检索,保存和更新数据存储(数据库,文件系统等)数据的逻辑.以下是DAO和DTO界面的示例:

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

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}
Run Code Online (Sandbox Code Playgroud)

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

至于第二个问题,如果你有一个小应用程序它是完全没问题的,但是如果你想要遵循MVC模式,最好有一个单独的控制器,它将在一个单独的类中包含你的帧的业务逻辑,从事件处理程序向此控制器发送消息.这会将您的业务逻辑与视图分开.

  • 使用DTO接口对象模型是一种可怕的做法.void save(PersonDTO人)是纯粹的癌症. (4认同)
  • 我不确定"独立控制器"是什么意思.根据我的读数,MVC中的控制器应该尽可能瘦,并且您的业务逻辑应该封装在您的模型中. (3认同)
  • 当我们有像POJO这样的Class对象时,为什么还需要DTO?他们俩都不一样吗? (3认同)
  • @Ben我也知道,但这很有趣。迟了。你会如何以更好的方式编写`void save(PersonDTO person)`? (3认同)
  • 可能我误解了这个问题. (2认同)
  • @Bhargav DTO用于返回多个实体(POJO)的组合结果或来自实体的有限资源。 (2认同)