日期:2014-05-17  浏览次数:20671 次

spring 的事务管理问题
java web 开发,使用ssh框架,整个web程序分为dao层,service层,action层。在service层上有@Transactional(readOnly = true)注解,是给每个方法添加事务。我的疑问是:那session是何时开启的?打开session,打开事务,提交事务,关闭session的时机分别是什么时候,哪位大神知道的,给小弟解释下,不胜感激!

------解决方案--------------------
你看下transcationManager源码就知道了,里面就有打开session,打开事务,提交事务,关闭session
------解决方案--------------------
在service层用AOP技术,spring通过事物管理器(transcationManager)拦截service中的方法,即在方法执行前打开连接,开启事物,在方法执行后提交事物,关闭连接。在service层的方法里获取transcationManager打开的session执行数据库操作语句。