图层之间的java类型转换

时间:2012-07-16 12:24:24

标签: java type-conversion layer

Java应用程序中常见的有:

  • IHM图层
  • 服务层
  • a dao layer

通常每个图层都有自己的对象,并依赖转换器将对象从图层转换为另一图层。

就我而言,我使用Sing MVC作为IHM层,将MyBatis作为doa层。

由于Spring MVC和MyBatis只使用没有任何注释的bean:

是否需要在3层上设置不同的对象? 在3层之间共享同一个对象是一个好习惯吗? 或者为什么不建议这样做?

2 个答案:

答案 0 :(得分:3)

在大多数情况下,最好在各层之间保持完全分离。

假设您有一个名为UserDAO的对象来保存用户数据,并且在所有图层上编写了大量代码后,您决定将sureName更新为对象中的lastName ,现在你必须遍历所有图层并更改对该对象字段的每个引用。

另一方面,如果您将此对象保留在数据库图层上并将其映射到上层的其他对象,则需要更改的是映射:

somObj.setUserLastName(dao.getSureName());

为:

somObj.setUserLastName(dao.getLastName());

当然这是一个愚蠢的例子,但它只是为了演示。

另一方面,在每一层上分离每个对象可能会导致大量的冗余和重复,并且可能会变成维护恐怖,因此您需要考虑优缺点并确定最适合分离的位置和哪里没有。

答案 1 :(得分:0)

我参与了两个项目,每个项目都有一个模型,以及具有良好领域模型的项目。

我倾向于使用域模型,开发人员和架构师花时间开发它并考虑每个字段的使用。
这种域模型更易于维护和更新。

我记得必须在DAO层添加一个字段,暗示我必须更新3个模型和4个转换器。引入错误的风险很大。特别是如果每​​个层都有例如Date对象的另一个实现。 (Dao - > java.sql.Timestamp,Service - > java.util.Date)。

所以我建议在所有层共享一个好的域模型。