解决方案 »
- 如何把http交互中request,response的信息完全打印出来?
- spring整合struts的问题
- 现在的SSH项目中需要做报表,现在哪种在WEB上用的比较多啊
- hibernate 取主键值问题
- 这个ession是什么意思???
- 如何在环境变量中设置数据库连接包?各位高手帮帮忙!在线等,急呀!!!!
- 启动tomcat
- 大量电子图书下载,快快快!!!!!!!!!!!!!!!!!!
- EJB高手帮我解决这个问题
- 请问:CMP2.0中使用FindAll()为什么不行?
- 从后台返回的json数据到页面要不要eval("("+data+")")一下然后在页面展示啊
- easyui datagrid在IE8及以下的一个BUG,希望有大神能帮助解决
1、开启事务
2、设置事务的隔离级别(不设置的话就使用默认隔离级别)
3、执行SQL
4、提交事务
这个过程可以放在数据库直接写,如果用Spring管理了,最终也是反映到数据库里面,两者没什么区别,如果是正常的执行普通SQL,我想不到在Spring里管理这一个过程时,数据库哪里能再修改隔离级别,所以你说的“如果Spring定义的隔离级别和数据库设置的隔离级别不一样”就不用考虑了,当然如果Spring调用的是存储过程,存储过程自己开启了事务,也设置了隔离级别,这时候Spring也级开启了事务,同样设置了隔离级别,这个情况我没有试过。
可以去看看spring源码的DataSourceTransactionManager类下的doBegin(Object transaction, TransactionDefinition definition),
DataSourceUtils.prepareConnectionForTransaction(con, definition);会设置此时事务开始时Connection的隔离级别。
然后我猜测就由jdbc驱动和数据库来处理,这边就和基于jdbc写事务处理相似了,设置不自动提交等等。
如果spring设置的隔离级别数据库不支持,可能会默认使用数据库本身设置的隔离级别处理了。