锁定老帖子 主题:DAO设计模式和事物处理
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-26
dao对象,正如其名字“数据访问对象”,属于系统的“数据访问层”,而事务处理属于业务层,所以别把事务处理放在数据访问层。除非是数据访问层本身的事务,那么就应该放在dao里。
|
|
返回顶楼 | |
发表时间:2004-03-01
哈哈,楼上钻我的牛角尖呀!事务当然可以是Bean管理的,J2EE的事务有7种,其中之一就是Bean管理。呵呵,当你选择了Required,还能选择Bean管理么?哈哈,当然Required是针对方法级别的。
如果多个Connection存在于一个Bean方法中,那就是分布式事务了,楼上,就不是那么简单滴!同一提交、同一回滚,呵呵,那只是一种简单的思考罢了(你有没有想过如果两个不同的链接都是更新同一个表,又在同一个事务当中,怎么处理,怎么回滚呢?这还是简单的疑问,复杂的多着了) |
|
返回顶楼 | |
发表时间:2004-03-01
总是感觉凤兄对EJB理解有所偏颇,你所说的J2EE的事务有其中其实是CMT的七种不同的事务管理方式。EJB的事务管理只有BMT或CMT.还有所谓,多个connection存在于一个bean方法中就是分布式事务了更是误导!什么是分布式也没搞清楚吧
|
|
返回顶楼 | |
发表时间:2004-03-02
EJB的事务管理主要分为容器事务和Bean事务,其中容器事务有:Required,RequireNew,Mandatory,Support , Not Support , Never6种属性,如果选择了Bean管理事务,那么上述六种事务是不能选择的,如果选择上述6种,也就不能选择Bean管理。不要老抓我的词不放。
多个connection在一个事务中,必须有两种,一种属于分布式事务,另外链接必须共享,也就是说实际上是同一个链接。而且我可以明说,JBoss,Apusic都不支持,WebLogic、Websphere支持(简单地讲,你可以在SessionBean中同时访问CMP,DAO-通过JDBC,这样的话,会报错!) 分布式事务是什么?分布式事务是对于一个逻辑事务中出现了多个本地事务(本地事务可以是在同一资源,也可以在不同资源;可以是对不同资源的不同地访问,也可以是对同一资源不同的链接)。分布式事务非常难以处理,换句话说,做EJB的集群就必须做到分布式事务。 这就是如今很多服务器,支持流量分流、支持Weba集群的很多,但是支持EJB集群的服务器却很少的原因。 在我的话中,当然有很多语言不甚精确,但是希望楼上根据语境来看待问题,不要老抓我一两句不准确的话语。(我做J2EE包括EJB的项目应用都两年多了!从1.0就开始用了,不要老水我, ) |
|
返回顶楼 | |
发表时间:2004-03-07
凤舞凰扬 写道 EJB的事务管理主要分为容器事务和Bean事务,其中容器事务有:Required,RequireNew,Mandatory,Support , Not Support , Never6种属性,如果选择了Bean管理事务,那么上述六种事务是不能选择的,如果选择上述6种,也就不能选择Bean管理。不要老抓我的词不放。
多个connection在一个事务中,必须有两种,一种属于分布式事务,另外链接必须共享,也就是说实际上是同一个链接。而且我可以明说,JBoss,Apusic都不支持,WebLogic、Websphere支持(简单地讲,你可以在SessionBean中同时访问CMP,DAO-通过JDBC,这样的话,会报错!) 分布式事务是什么?分布式事务是对于一个逻辑事务中出现了多个本地事务(本地事务可以是在同一资源,也可以在不同资源;可以是对不同资源的不同地访问,也可以是对同一资源不同的链接)。分布式事务非常难以处理,换句话说,做EJB的集群就必须做到分布式事务。 这就是如今很多服务器,支持流量分流、支持Weba集群的很多,但是支持EJB集群的服务器却很少的原因。 在我的话中,当然有很多语言不甚精确,但是希望楼上根据语境来看待问题,不要老抓我一两句不准确的话语。(我做J2EE包括EJB的项目应用都两年多了!从1.0就开始用了,不要老水我, ) 学术研究需要一个严谨的态度,论坛的技术回贴更是如此,这是对其他网友的尊重,也是对你自己的负责.你不是提倡对设计编码进行重构吗,我想你对自己的回复进行重构应该不是很困难的吧. |
|
返回顶楼 | |
发表时间:2004-03-08
:oops: ,我实在没有任何的意思,只是我希望大家在进行技术讨论的时候,针对一些需要讨论的问题,因为回复自然是有限的,而且不像写书,打快了,语句有些毛病或者没有表达清楚都是有可能的。我希望每一个人在讨论的时候不要去抓这样的细节问题,如果是那样,讨论也就没有任何意义了,纯粹变成两个人的吵嘴了,不是么?呵呵,我不想吵嘴的。
楼上的指出,哈哈,说明我的态度还是有问题的,我接受批评,并主动开展自我批评,哈哈~~~~~~~~~~~,我也开始重构一番。 |
|
返回顶楼 | |
发表时间:2004-03-08
如果你的jdbc实现了XA的话,使用JTA都可以,不同connection也可以在同一个事务
|
|
返回顶楼 | |
发表时间:2004-03-08
是啊,用XA的驱动,可以使同一资源的不同链接共享一个事务情境(context),但是实际实现的是使两个不同的调用共享使用同一个链接罢了。对于数据库的事务,在本地上是不可能通过两个链接进行的,当然,一个方式便是将两个本地事务融合为一个分布式事务,只不过这种分布式属于虚拟的罢了。
|
|
返回顶楼 | |
发表时间:2004-03-09
如果都是本地事务,且为同一数据库,应该是没必要用XA驱动吧?个人感觉分布式事务应该是会慢一些的
|
|
返回顶楼 | |
发表时间:2004-03-09
是没必要使用XA
|
|
返回顶楼 | |