ssh中session和事务问题。

程序的结构一般是:action调用service,service调用dao,dao操作数据库,事务加在service上面,如:<aop:config><aop:point... 程序的结构一般是:action调用service,service调用dao,dao操作数据库,
事务加在service上面,如:
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution (*
com.edgar.cmmysql.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config>
是不是说在action调用service的时候,就开启事务了呢?
dao里面有:
this.getHibernateTemplate().save(obj);
是不是在save方法执行完以后,刚才开启的事务就关闭了??
session是在事务开启的时候创建的,事务关闭的时候关闭的?
很多的时候一个service里面要调用不同的dao,那么事务是不是就会被多次的开启和关闭呢?
我的理解对吗????
我真的弄不明白,希望高手指点!讲明白了多少分都行。
展开
 我来答
母菲0p
2009-03-05 · TA获得超过280个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:140万
展开全部
楼上说法欠妥,你的service是一个包,spring提供的采用aop的方式来使用声明式事务,其中pointcut中的expression是定义接入点的表达式,LZ的表达式的含义大概是service包下的所有的类的所有的方法....调用类的时候不会开启什么事务,当service包的某一个类中的某一个业务方法被调用时,事务就开启了.

1.你问的是不是save方法完了之后事务就关闭了,这里其实还有一个事务的传播特性在里面,而spring默认是采用的required,当你在没有事务的情况下调用save那将创建一个事务,当你在有事务的情况调用save则save是参加到当前事务中执行的.

2.你问是不是service中调用不同的DAO,事务会不会被多次开启,不会,结合以上讲,一个是切入点的问题,你的切入口在service而不是dao,所以....第二个,事务是采用的required方式,所以不论从哪个方面来想都可以想通这个问题.

3.session的问题,一般应用中都是"open session in view"的,也就是说在请求的时候打开session,在请求结束的时候关闭session,spring有对session进行管理的工具,如OpenSessinInViewInterceptor之类的东西可以帮组你....

厄....语言表达不好,希望能帮到LZ一些....
雪箂
2009-03-06 · TA获得超过502个赞
知道小有建树答主
回答量:471
采纳率:57%
帮助的人:85.2万
展开全部
当你调用service里面一个方法的时候事物被创建.
无论你这个方法执行了多少个dao里的方法.事物一直都不提交.
对于session的管理与service毫无关系.
是spring自动创建,自动销毁的.
service方法执行完毕,事物提交.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8d3bdf3bc
2009-03-05 · TA获得超过368个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:186万
展开全部
不对,service上配置事务,也就是说,事务在进入service前,开启。在service调用结束后,提交事务。在service方法中,调用多少DAO,都会在一个事务中,只要一个DAO出现错误,整个事务回滚。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式