扫码关注官方订阅号
1.就我所知Mysql的默认隔离级别是repeatable read,Oracle等多数数据库默认隔离级别是Read Committed,所以这边的defaultLevel起的是适配作用吧
3.下面这段解释我觉得很好理解这个问题http://javasam.iteye.com/blog/1902177
由于Spring的事务管理是通过线程相关的ThreadLocal来保存数据访问基础设施的(Connection对象),再结合IoC和AOP实现高级声明式事务的功能,所以Spring的事务天然的和线程有着千丝万缕的关系。
Spring通过ThreadLocal可以将大部分Bean无状态化(线程安全的)所以Spring中单实例Bean对线程安全问题拥有一种天然的免疫力。
所以Spring中DAO和Service都以单实例的方式存在,Spring将有状态的变量(Connection)本地线程化,达到另一个层面上的线程无关,从而实现线程无关。
在相同的线程中进行相互嵌套调用的事务方法工作于相同的事务中,不同的线程中,则各自独立工作与独立的事务中。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
1.就我所知Mysql的默认隔离级别是repeatable read,Oracle等多数数据库默认隔离级别是Read Committed,所以这边的defaultLevel起的是适配作用吧
3.
下面这段解释我觉得很好理解这个问题http://javasam.iteye.com/blog/1902177
由于Spring的事务管理是通过线程相关的ThreadLocal来保存数据访问基础设施的(Connection对象),再结合IoC和AOP实现高级声明式事务的功能,所以Spring的事务天然的和线程有着千丝万缕的关系。
Spring通过ThreadLocal可以将大部分Bean无状态化(线程安全的)所以Spring中单实例Bean对线程安全问题拥有一种天然的免疫力。
所以Spring中DAO和Service都以单实例的方式存在,Spring将有状态的变量(Connection)本地线程化,达到另一个层面上的线程无关,从而实现线程无关。