论坛首页 Java企业应用论坛

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

浏览 122571 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-01-18  
看到这个帖子想起hiberate中文网来了。、
其实以前那种方式挺好的。精华有个专门看的地。

不知道javaeye的门户什么时候能完成。

不知道robbin介意不介意我把以前hibernate中文网打包上传。
0 请登录后投票
   发表时间:2006-01-18  
realnicky 写道
首先感谢robbin的帖子,让我这个新手明白了许多!
我也有一个跟上面几个兄弟相同的问题:查询后得到的列表 我一般都直接放在list里面 然后传到jsp页面通过遍历来显示的.这样的做法结合robbin的文章,我感觉好像有点不妥当.谁有更好的想法吗?


我也想听听各位pro 和robbin对从dao层获得集合处理的见解。

在我做的项目里是直接在dao层获得数据库列表list,然后通过业务层(service)传递给控制层(Web Control)显示list数据集。

当然考虑到分页,我会在业务层处理好数据集的范围,返回给控制成(Web Control)一个PageView对象,其中有list属性,记录了显示的信息列表,它的set方法是直接从dao中获得的list 也就是hibernate中获得游离态list集合。

这样处理,我一直很迷惑,有时候也头痛:就效率来说比较方便,开发写代码也不烦琐;但有时候用起来很不方便,毕竟是得到的po集合,和vo集合有出入。暂且不举例,我想用这样方法的人会有同感。

但对应一个表单form,则可以很明显的用的mvc模式
JSP(View) ---> ActionFormBean(Module) ---> Action(Control)
---> Business Bean ---> DAO ---> ORM --->DB
实现严格的分层偶合。


不知道对于集合怎么处理分层方式,难道真的要将po list 转成 vo list 作为表现?

各位在大项目中是怎么处理的呢?希望得到各位的宝贵意见。
0 请登录后投票
   发表时间:2006-01-19  
liuyi 写道
realnicky 写道
首先感谢robbin的帖子,让我这个新手明白了许多!
我也有一个跟上面几个兄弟相同的问题:查询后得到的列表 我一般都直接放在list里面 然后传到jsp页面通过遍历来显示的.这样的做法结合robbin的文章,我感觉好像有点不妥当.谁有更好的想法吗?


我也想听听各位pro 和robbin对从dao层获得集合处理的见解。

在我做的项目里是直接在dao层获得数据库列表list,然后通过业务层(service)传递给控制层(Web Control)显示list数据集。

当然考虑到分页,我会在业务层处理好数据集的范围,返回给控制成(Web Control)一个PageView对象,其中有list属性,记录了显示的信息列表,它的set方法是直接从dao中获得的list 也就是hibernate中获得游离态list集合。

这样处理,我一直很迷惑,有时候也头痛:就效率来说比较方便,开发写代码也不烦琐;但有时候用起来很不方便,毕竟是得到的po集合,和vo集合有出入。暂且不举例,我想用这样方法的人会有同感。

但对应一个表单form,则可以很明显的用的mvc模式
JSP(View) ---> ActionFormBean(Module) ---> Action(Control)
---> Business Bean ---> DAO ---> ORM --->DB
实现严格的分层偶合。


不知道对于集合怎么处理分层方式,难道真的要将po list 转成 vo list 作为表现?

各位在大项目中是怎么处理的呢?希望得到各位的宝贵意见。
难道真的要将po list 转成 vo list 作为表现?

支持楼上说的,查询分页经常遇到的
问题。
从actionForm得到的条件传入到action中,组合成hql或是qbc,qbe 调用m层的po,形成list,传递到显示页即v层; 这样的话需要把po转成vo吗???

况且在v层还要点击分页链接,这个链接是直接调用c层啊(还要传递查询条件,和页码等信息),对于这样的问题楼主和各位仁兄请指点一下啊!!!!
0 请登录后投票
   发表时间:2006-04-06  
我觉得一些哥们把mvc和三层机构搞混了吧
0 请登录后投票
   发表时间:2006-04-08  
Lucas Lee 写道
robbin说得不错。
实际项目中我用的也正是类似的思路。
不过我想补充一点,介绍一下我的经验,即在VO<-->PO之间转换的问题,一般而言要写两个转换方法,将VO转为PO,将PO转为VO。这种东西在我看来显然是体力劳动,而我的方式就是偷懒:用Reflection的方式去执行。
结果就是,基本上所有的转换都是用一个通用的类执行。而效率上,目前看来也没有明显的损失。

呵呵,供大家参考。

想听听这位兄台VO<-->PO数据转换的方法。
各位高手也可以给小弟指点一二,谢谢!
0 请登录后投票
   发表时间:2006-04-09  
good!!!
我觉的 在struts中的mvc是
m:Action
V:jsp+ActionForm
C:ActionServlet
0 请登录后投票
   发表时间:2006-04-14  
po list 转成 vo list
可以直接在po中写个转成vo的list,或者有时候在hql语句中用投影查询做的,直接产生vo
0 请登录后投票
   发表时间:2006-04-20  
esprit 写道
Lucas Lee 写道
robbin说得不错。
实际项目中我用的也正是类似的思路。
不过我想补充一点,介绍一下我的经验,即在VO<-->PO之间转换的问题,一般而言要写两个转换方法,将VO转为PO,将PO转为VO。这种东西在我看来显然是体力劳动,而我的方式就是偷懒:用Reflection的方式去执行。
结果就是,基本上所有的转换都是用一个通用的类执行。而效率上,目前看来也没有明显的损失。

呵呵,供大家参考。

想听听这位兄台VO<-->PO数据转换的方法。
各位高手也可以给小弟指点一二,谢谢!


form->vo->po的数据转化过程中,似乎有很多问题需要注意啊。比如:
public class PO{
   private Integer para1;
   private Integer para2;
}
public class VO{
   private Integer para1;
   private Integer para2;
}

public class Form{
   private String  para1;
   private String  para2;
}

(1)现在页面1中编辑para1,形成form1对象,则para1="",para2=null.因为页面1中不需要编辑para2,所有页面中没有出现这个属性。
(2)form 通过apache 的beanutils拷贝属性到vo,则 vo中para1=null,para2=null 问题是,我现在怎么在vo中区分 para1 和para2已经被编辑,以至需要影响PO并反映到db中?
 

能有什么高见吗?
0 请登录后投票
   发表时间:2006-04-30  
什么是软件的三层结构? mvc是软件的三层结构吗,不是,mvc只是表现层的三层结构。这里的表现层是指web层,而且表现层本来就是指web层,只是有太多的人误解了,这样的话,mvc只是web层的一个结构,并不是整个软件的结构,很多人在这个地方有误解。软件的三层结构是,1表现层,2业务逻辑层,3数据存储层。struts只是在第一层,hibernate在第三层。
我认为mvc的划分是这样的v和c是是表现层的,而m是在业务逻辑层的,而且我认为struts中根本没有涉及到m这个东西,struts中只有v和c,m是其他的用于和struts结合的。这样我们可以认为在struts中v是jsp(或其他),c是action(其实是RequestProcessor),那么整个领域模型应该是m,就是说这个m里应该包括service,dao,entity,value object。
0 请登录后投票
   发表时间:2006-05-17  
能否提供一个这样的例子,供新手学习一下,谢谢拉!
0 请登录后投票
论坛首页 Java企业应用版

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