该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-18
看到这个帖子想起hiberate中文网来了。、
其实以前那种方式挺好的。精华有个专门看的地。 不知道javaeye的门户什么时候能完成。 不知道robbin介意不介意我把以前hibernate中文网打包上传。 ![]() |
|
返回顶楼 | |
发表时间: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 作为表现? 各位在大项目中是怎么处理的呢?希望得到各位的宝贵意见。 |
|
返回顶楼 | |
发表时间: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 作为表现? 各位在大项目中是怎么处理的呢?希望得到各位的宝贵意见。 支持楼上说的,查询分页经常遇到的 问题。 从actionForm得到的条件传入到action中,组合成hql或是qbc,qbe 调用m层的po,形成list,传递到显示页即v层; 这样的话需要把po转成vo吗??? 况且在v层还要点击分页链接,这个链接是直接调用c层啊(还要传递查询条件,和页码等信息),对于这样的问题楼主和各位仁兄请指点一下啊!!!! |
|
返回顶楼 | |
发表时间:2006-04-06
我觉得一些哥们把mvc和三层机构搞混了吧
|
|
返回顶楼 | |
发表时间:2006-04-08
Lucas Lee 写道 robbin说得不错。
实际项目中我用的也正是类似的思路。 不过我想补充一点,介绍一下我的经验,即在VO<-->PO之间转换的问题,一般而言要写两个转换方法,将VO转为PO,将PO转为VO。这种东西在我看来显然是体力劳动,而我的方式就是偷懒:用Reflection的方式去执行。 结果就是,基本上所有的转换都是用一个通用的类执行。而效率上,目前看来也没有明显的损失。 呵呵,供大家参考。 想听听这位兄台VO<-->PO数据转换的方法。 各位高手也可以给小弟指点一二,谢谢! |
|
返回顶楼 | |
发表时间:2006-04-09
good!!!
我觉的 在struts中的mvc是 m:Action V:jsp+ActionForm C:ActionServlet |
|
返回顶楼 | |
发表时间:2006-04-14
po list 转成 vo list
可以直接在po中写个转成vo的list,或者有时候在hql语句中用投影查询做的,直接产生vo |
|
返回顶楼 | |
发表时间: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中? ![]() ![]() 能有什么高见吗? |
|
返回顶楼 | |
发表时间: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。 |
|
返回顶楼 | |
发表时间:2006-05-17
能否提供一个这样的例子,供新手学习一下,谢谢拉!
|
|
返回顶楼 | |