论坛首页 Java企业应用论坛

结合struts和hibernate谈J2EE架构的数据表示

浏览 122569 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-02-03  
2种情况:

1种是 一个网页中  设计到了 多个PO 中的 属性,这时候 需要一个Form Bean 从这个PO 里面取些属性,从那个PO 取些属性。  然后在 JSP 中显示这个Form Bean 。

第二种情况是, 数据库中不需要 某个属性,比如 我JSP 中有某个投票项,的投票数,还要有 占总投票数的百分比,还有 柱状图的 高度, 这 后2个完全可以根据 投票数计算出来,没必要 在数据库中增加额外字段。这时候 需要 做些处理  一种方案是 在PO 中加属性(PO中有,而数据库中没有) 另一种是 在 PO 对应的Form Bean 中加。

小妹觉得这 2种情况是  基本 包含了PO 和 Form Bean 不同,需要转换的情况。而此种情况,我也不确定是在PO中构造还是在Form Bean构造好。

跟各位gao 人 的贴,真紧张。欢迎批评。
0 请登录后投票
   发表时间:2005-02-04  
jeffrey_he 写道
robbin的例子中没有提到列表的情况啊,假如是一个用户列表的页面呢?我通过Business Bean查询得到的是一个List或Iterator呢?是否也要把其中每个元素转换为formbean来显示?

嗯,对这个问题,我也正迷惑着!
0 请登录后投票
   发表时间:2005-02-20  
汗,来了这么久到现在才发现这篇文章.
突然间豁然开朗.
我们用的是c#,一切给着ms走。
一直都是学着PetShop的那个Model
在PetShop中Model即是robbin说的那个po,也是那个vo,而且也是dto
Model从底走到天
项目小一点感觉挺好
可是项目越大,业务间关系越复杂
那个Model里东西乱的......

robbin 写道
在一个规范的J2EE架构中,不同层的数据表示应该被限制在层内,而不应该扩散到其它层,这样可以降低层间的耦合性,提高J2EE架构整体的可维护性和可扩展性。


其实:

在.net架构中,不同层的数据表示应该被限制在层内,而不应该扩散到其它层,这样可以降低层间的耦合性,提高.net架构整体的可维护性和可扩展性。
0 请登录后投票
   发表时间:2005-02-20  
shoopman 写道
jeffrey_he 写道
robbin的例子中没有提到列表的情况啊,假如是一个用户列表的页面呢?我通过Business Bean查询得到的是一个List或Iterator呢?是否也要把其中每个元素转换为formbean来显示?

嗯,对这个问题,我也正迷惑着!


个人认为也应该转换,在action里做一下就可以了,需要自己扩展一下beanutil
0 请登录后投票
   发表时间:2005-02-21  
引用


Robbin写的很好,但是我还是忍不住说两句。

引用
JSP(View) ---> ActionFormBean(Module) ---> Action(Control)


我想说说关于ActionFormBean定义为Module的问题。前一段时间在Blogdriver上有很多朋友的Blog上提到MVC的问题。没记错的话Gigix和Ozzzzz认为MVC就是表示层的东西,不涉及业务逻辑方面,认为MVC是多层架构中表示层的架构。但从网上查看一些资料MVC实际上应该是三层,而不是只在表示层(我个人也是这么认为的)。如果MVC中V表示的是表示层的,那么ActionFormBean不是M,尽管V中也有数据,但那是表示层的,PO等才是M。
所以如果使用Struts/Hibernate的时候,MVC应该是这样分割:

Struts(V) -> PO/Hibernate(M) -> StrutsController(C).



个人认为,这是大多数人对 MVC 和 三层结构 的误解,三层结构 是 整个应用系统的框架(尤其是网络应用),而MVC的提出最初是针对GUI系统,目前将MVC用于Web,应该只适用于表示层。虽然它们在部件分割的概念上很相似,但是大家不应该把 MVC 和 三层结构 相混淆。
0 请登录后投票
   发表时间:2005-02-21  
yhc0125 写道
shoopman 写道
jeffrey_he 写道
robbin的例子中没有提到列表的情况啊,假如是一个用户列表的页面呢?我通过Business Bean查询得到的是一个List或Iterator呢?是否也要把其中每个元素转换为formbean来显示?

嗯,对这个问题,我也正迷惑着!


个人认为也应该转换,在action里做一下就可以了,需要自己扩展一下beanutil



看来真的有不少人在迷惑这个问题,我也是,不知道有没有人已经做好扩展的beanutil了,当然,要的是效率上最高的,要是一个一个循环,那就没有什么意义了。
0 请登录后投票
   发表时间:2005-02-22  
看来robbin已经是顶级高手了,不需要讨论代码层的东西了。
0 请登录后投票
   发表时间:2005-02-23  
robbin说得不错。
实际项目中我用的也正是类似的思路。
不过我想补充一点,介绍一下我的经验,即在VO<-->PO之间转换的问题,一般而言要写两个转换方法,将VO转为PO,将PO转为VO。这种东西在我看来显然是体力劳动,而我的方式就是偷懒:用Reflection的方式去执行。
结果就是,基本上所有的转换都是用一个通用的类执行。而效率上,目前看来也没有明显的损失。

呵呵,供大家参考。
0 请登录后投票
   发表时间:2005-02-23  
用Reflection的方式去执行。 


这位仁兄  能否介绍下.
0 请登录后投票
   发表时间:2005-02-28  
东西是死的,人是活的—— 活人要用活死东西
用其
精华

弃其糟魄
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics