2014-09-22 85 views
0

我需要一些关于如何在不同层之间移动数据的想法。通常我会按照以下计划在每个图层都有自己的POJO。在不同层之间传递beans

  formPojo      controllerPojo    servicePojo   
     ===============>    ================>   =============> 
Form/UI     Controller      Service     Dao 
     <===============    <===============   <============ 
     controllerPojo    servicePojo     dbPojo 

的这个主要缺点是连场是相同的,无需转换,我需要有四种不同类型的POJO(* POJO)。所以我的问题是:

  1. 什么是在层之间传输数据的正确方法?
  2. 我相信每个人都有像Model,DTO,Domain这样的专有名称。根据上图可以解释哪一个是哪一个。

感谢

+2

POJO表示普通旧Java对象,您的意思是DTO与数据传输对象一样。 – Smutje 2014-09-22 20:43:35

+1

我认为在不同层次上共享单个DTO并不会令人震惊。试着去想简单。构建一个复杂的“改变设计”架构并不总是最好的解决方案,我通常更喜欢“YAGNI”(http://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)编码方式。 – Joel 2014-09-22 21:12:16

回答

0

这取决于你使用的是什么作为一个框架。例如,在Spring MVC中,可以使用支持对象和Model对象进行数据绑定和传输。通常这些物体不是彼此的镜像。

我会推荐阅读这些概念。有关Spring的具体实现,请参阅Spring MVC文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html

我想详细说明一下。在您作为应用程序开发人员的整个职业生涯中,您将遇到这些概念。在为不同层次创建不同对象的过程中,我们经常需要决定分层的最佳方法,从而分离数据。获得这一点很重要,幸好有工具可以提供帮助。

首先,我们需要了解为了利用框架和容器提供的内置效率而提供的机制。因此理解允许自动检测属性和方法的Java bean约定。

也有映射器。例如,如果我想获取数据对象并将其内容放入页面对象中。我可能会使用像Dozer或ModelMapper这样的东西来帮助管理两个这样的对象之间的数据传输。根据您的需要,这可能很简单或复杂。

当然,手工做这件事是学习这些工具背后的想法的最简单方法,但应该意识到这些工具存在,因为它们可能会影响您的方法。

+0

请注意,我没有深入讨论域对象,模型对象和数据传输对象的区别或定义。这是因为它们都可以根据其适用性而不同地使用;并不总是有一个答案,经常有重叠。然后出现其他概念,如不变性,身份等。 – TechTrip 2014-09-23 00:37:45