繁体   English   中英

使用spring-mvc设计Web应用程序,如何选​​择数据,模型对象和ui对象?

[英]Design Web application with spring-mvc, how to choose data, model objects & ui objects?

我使用spring-boot,spring-mvc和hibernate构建了一个Web应用程序。 我直接在UI中使用DAO,只需将它们包装在另一个对象中即可。 它使我的DAL和Presentation层紧密耦合。

据我了解,mvc架构通过分离出每个组件来减少耦合,我对此进行了努力。 :(

可以做我做的事吗? 因为它将表示层对象转换保存为DAO,以将其持久保存在DB中。 什么是推荐的最佳设计方法? 当前设计(相当紧密地结合在一起)会带来什么收益?

我无法弄清楚,任何人都可以帮助我理解它。

提前致谢!!

我曾经那样做:

我创建了几层:UI层,BLL层和DAL层。 然后,我为每个模型创建模型。 例如:MyUser_UI.java,MyUser_Bll.java和MyUser_Dal.java。 这种模型称为POJO,它们用于在层之间传输数据。 如您所见,MyUser_xxx.java具有类似的属性,因此我使用了一个名为DozerBeanMapper的自动对象映射器来帮助我将数据从一个传输到另一个。 那就是我所做的。

我保证这是一种实用的方法,但是显然,它远非最佳方法。 我必须维持太多的课程。 考虑一下:有一天,我想为MyUser_xxx.java添加一个新属性,我必须更改三个位置。 我经常错过一些东西并得到错误。 所以我改变了另一种方式。

我将POJO提取到单独的程序包中。 所有这三层都可以访问此程序包。 这样,我感觉好多了。 但这还带来其他一些问题。 每个层的POJO要求通常有所不同。 因此,我必须创建基类MyUser.java,以及从基类派生的MyUserEx.java。

我认为没有最好的设计有点令人失望。 但是我们可以结合使用许多方法来使我们的代码更好。 你更喜欢女巫吗? 由你决定。

马丁·福勒(Martin Fowler)在他的EAA书中的P中有关于分层的相当开创性的文章:

http://martinfowler.com/eaaCatalog/serviceLayer.html

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM