Hiberante没用过,Struts也是一知半解,向个位前辈学习,up
解决方案 »
- 用hibernate根据实体类创建oracle表 报错
- 工作流的概念
- 用HttpRequester访问地址的时候,提示说cookies无效。。
- 应用程序运行一段时间就会卡,然后导致服务死掉,困扰许久不能解决,求助。
- 我有一个Linux下的C写的3DES加密的代码,有没有高人可以帮忙转成JAVA的?
- 问一下:怎么一直显示是ant version 1.6.2
- ssh运行时遇到Servlet action is not available问题
- Hibernate配置问题
- 着急问题,大家帮看看!
- jsp+tomcat+sqlserver数据库连接问题!
- 怎样用正则批配中文字串
- 【提问】applet传递对象给servlet
你说的对,你非要写到action中也没有办法。
2、dao中如果无法体现事务的处理,能在action中写呢?但这样是否违反了mvc?
我明白你的意思,你的action是一个线程,在你的action中可能用到好几个dao实现一个事物
解决的办法是利用java.lang.ThreadLocal保存线程中的连接,dao中将连结取出。
3、dao中如果要写每个逻辑的处理,那和action是不是又重复了?
前2个问题照做就没有这个问题
4、po、vo、actionform这几个是否有重叠的地方?怎么做比较合理,在业务修改的时候既能尽量少的修改代码,又能使这些重复量最少?
本来就是有重复的,之所以采用po、vo、actionform是为了层次分明,他们之间也还是存在一些区别的,如果完全一样,干脆用一个就行了。po是hibernate层的,vo只是个中间层次,actionform就不用说了。
当然不应该在action中写, 这里的mvc只是指web层范围内的,你指的dao无法体现,如果是指一个事务涉及了好几个DAO的话,我想你应该有一层service,每一个service方法视为一个事务。thread这是具体实现上的细节了。
3、dao中如果要写每个逻辑的处理,那和action是不是又重复了?
dao 是低层的数据访问方法,逻辑不应该在这里出现,当然也不是在action中,还是应该有一个业务层的。
4、po、vo、actionform这几个是否有重叠的地方?怎么做比较合理,在业务修改的时候既能尽量少的修改代码,又能使这些重复量最少?
vo是值对象,不带任何业务方法,便于在各层间传递,actionform可以理解为vo的一个特定子集,它只负责从页面上收集表单数据组装给action中的bean使用,顺道负责一些简单的非逻辑验证工作。po见上面兄弟所言
我目前负责的一个项目就是这么做,方便是方便,可以很大程度上使开发人员工作内容分开,可是在事务处理的时候就比较麻烦,按照 _chage(青之六号) 所说的做法是可以,但是这样无形也加重了开发量,而且在业务变更的时候可能有不少的修改量。
to _chage(青之六号) :
按你的说法增加了两层,业务层和service层,那action和dao具体要做什么比较合理呢?
关于service layer,在企业应用架构模式一书中是这样定义的:通过一个服务层来定义应用程序边界,在服务层中建立一组可用的操作集合,提供给应用程序的请求。所以很显然,service是业务层的边界类,而action可算算表示层的边界,在action中调用
service方法。至于dao这个东东,原则上它属于数据持久层的,不提倡在表示层上直接调用它,只有相邻层才有依赖关系,跨层依赖是不好滴。dao是低层的细粒度方法,重用的可能性更大,一个service方法往往会调度若干dao类完成
整个事务。
采用动态代理,在从工厂类获取每一个需要事务处理的业务类时,在方法前后都加上了事务代码,事务处理方式是灵活的,可以选jdbc,将来如果发生变化,有异构数据库,可以轻松转成jta,而对程序员是不可见的,他们无需负责事务,只要作好约定就可以了,比如说,以后缀名为_Tx结尾的方法都默认为一个事务。
另一个方法是基于容器配置,典型的是spring,(EJB也是),这种方法更加灵活。
至于你指出的,增加了开发量,使用 OO思想设计的领域模型,肯定比面向过程思维的脚本式编码类的数量要多很多,不过它带来的后期利益完全可以带来更大的回报。而且,在dao这一层面上,完全可以用代码生成技术加以辅助,如xDoclet。
说的不错,我尽量在接下去的架构设计中应用上,最近项目比较赶,没什么时间仔细把这些划分开,不过还好还有时间。由于架构设计需要平台无关,所以,我觉得由动态代理实现比较合理,不过这就要修改原有的设计代码,因为原本数据操作的封装没用工厂;至于那个service层,我还比较持保留,除了简单的crud可以在dao中做,其他按照这种约定的设计应该可以做的出来。有没有兴趣做个朋友,我在厦门工作,[email protected]