spring 申明事务中的session的打开与关闭

    spring申明事务,就是使用一个transaction proxy factory bean将transaction inceptor编入你的业务方法。在transaction inceptor的invoke方法中,会在调用你的业务方法前begin transaction,在方法结束后,调用commit或者rollback。但是要使用hibernate的事务对象,就一定要先有一个session。所以transaction inceptor会为你打开和关闭session。这里有一个策略,就是谁打开,谁关闭。如果transaction inceptor在启动事务时,发现已经有一个session与当前线程绑定了,他就会使用这个现成的session,并且结束提交事务后,也不会关闭它。如果发现没有session与当前线程绑定,这是transaction inceptor就会open一个新的session,并且在结束方法提交后,关闭这个由它打开的session。
   建议在dao方法中使用hibernate template,因为它提你完成了获得与当前线程绑定的session的操作。如果不用hibernate template,你就要使用spring的API提供的静态方法getRsource来获得session。在你业务逻辑中,绝对不要有close session的动作。因为这样会导致transaction inceptor提交事务时爆出session已关闭的异常。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值