【问题标题】:Design Web application with spring-mvc, how to choose data, model objects & ui objects?使用 spring-mvc 设计 Web 应用程序,如何选​​择数据、模型对象和 ui 对象?
【发布时间】:2016-03-03 16:37:32
【问题描述】:

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

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

可以做我做的事吗?因为它将表示层对象转换保存到 DAO 以将它们保存在 DB 中。 推荐和最好的设计方法是什么?当前设计(非常紧密耦合)的回报是什么?

我不明白,谁能帮我理解一下。

提前致谢!!

【问题讨论】:

  • 我不清楚你的问题,你正在寻找好的架构来处理你的 DAL 和休息?
  • @ojuskulkarni:我正在寻找最佳设计实践,同时创建 DAO 和对象以从 UI 中捕获数据。两者可以使用相同的对象吗?

标签: java performance spring-mvc design-patterns


【解决方案1】:

我以前也是这样的:

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

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

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

我认为没有最好的设计有点令人失望。但是我们可以结合很多方法来让我们的代码变得更好。你更喜欢女巫吗?这取决于你。

【讨论】:

  • 我明白,没有硬性规定可以遵循,但有一些指导方针可以减少将来出现的问题。正如我在问题本身所提到的,我也使用与您的第二种方法有些相似的方法,即直接包装 DAO 以创建我的 UI 层。
【解决方案2】:

Martin Fowler 在他的 P of EAA 书中有一篇关于分层的颇具开创性的文章:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多