天天看点

J2EE架构中各层的数据表示方法

J2EE 架构中各层的数据表示方法    Web 层的数据表示是 FormBean ,数据来源于 HTML Form POST   业务层的数据表示是 VO   持久层的数据表示是 PO ,其数据来源于数据库,持久层的数据表示例如 CMP 。在一个规范的 J2EE 架构中,不同层的数据表示应该被限制在层内,而不应该扩散到其它层,这样可以降低层间的耦合性,提高 J2EE 架构整体的可维护性和可扩展性。比如说 Web 层的逻辑进行了修改,那么只需要修改 FormBean 的结构,而不需要触动业务层和持久层的代码修改。同样滴,当数据库表进行了小的调整,那么也只需要修改持久层数据表示,而不需要触动业务层代码和 Web 层代码。      JSP(View) ---> Action Form Bean (Module) ---> Action(Control)      Action Form Bean 是 Web 层的数据表示,它和 HTML 页面 Form 对应,只要 Web 页面的操作流程发生改变,它就要相应的进行修改,它不应该也不能被传递到业务层和持久层,否则一旦页面修改,会一直牵连到业务层和持久层的大面积的代码进行修改,对于软件的可维护性和可扩展性而言,是一个灾难, Actiont 就是他的边界,到此为止!      Action(Web Control) ---> Business Bean ---> DAO ---> ORM --->DB     而 PO 则是业务层和持久层的数据表示,它在业务层和持久层之间进行流动,他不应该也不能被传递到 Web 层的 View 中去,而 ActionServlet 就是他的边界,到此为止!     整个架构的流程:   当用户通过浏览器访问网页,提交了一个页面。于是 Action 拿到了这个 FormBean ,他会把 FormBean 属性读出来,然后构造一个 PO 对象,再调用业务层的 Bean 类,完成了注册操作,重定向到成功页面。而业务层 Bean 收到这个 PO 对象之后,调用 DAO 接口方法,进行持久对象的持久化操作。     业务 Bean 取得 Name( 注意 : Name 对象只是 User 的一个属性 ) 对象之后调用 DAO 接口,返回一个 User 的 PO 对象,注意这个 User 不同于在 Web 层使用的 UserFormBean ,他有很多集合属性滴。然后业务 Bean 把 User 对象返回给 Action 。     总结:      Form Bean 是 Web 层的数据表示,他不能被传递到业务层; PO 是持久层的数据表示,在特定情况下,例如 Hibernate 中,他可以取代 VO 出现在业务层,但是不管 PO 还是 VO 都必须限制在业务层内使用,最多到达 Web 层的 Control ,绝不能被扩散到 View 去。      Form Bean 和 PO 之间的数据转化是在 Action 中进行滴。

继续阅读