在层之间传递实体对象[s]?

时间:2011-01-28 03:39:26

标签: jsf architecture jpa java-ee

请分享您对我目前正在测试的这类事情的看法:

  1. 在我的JSF托管bean中有一个JPA实体
  2. 将实体的属性绑定到JSF表单元素,例如输入文本,组合,甚至是实体的详细对象列表的数据表。例如。
  3. 让服务对象处理实体,意味着实体对象本身,也许还有其他一些简单的变量/对象
  4. 该服务将执行一些基本验证或简单过程,并将实体对象传递给DAO层以进行持久化
  5. JSF视图将反映分离的实体
  6. 这种解决方案是否可以在层之间传递实体?

    请原谅我在这件事上缺乏经验,因为我习惯于在webapp中使用'变量'(在struts 1中使用基于地图的formbean),但我已经读过将实体对象转换为其他格式,但是我不确定它是什么用的?

    如果定义了实体之间的关系,我们可以将它绑定到JSF组件,因此基于并填充实体的属性进行渲染。

1 个答案:

答案 0 :(得分:2)

是的,这非常好,实际上是现在推荐的方法。

这“将实体对象转换为其他格式”可能指的是Data Transfer Object模式,这在注释之前的糟糕时期是必要的,当实体类通常必须从某些特定于框架的基类继承时,进行字节码操作或由EJB容器实现为代理对象。

此类实体对象要么无法序列化,要么包含比实际实体数据更多的状态,因此在序列化时会浪费大量空间。因此,如果您想拥有一个单独的应用服务器层,则必须使用DTO模式使其与Web层进行有效通信。