spring的事务管理机制是基于什么实现的,spring的事务管理机制是基于
Yyds干货库存
PlatformTransactionManager事务管理器参考:spring-framework-4.2.4.RELEASE/docs/javadoc-api/index.html
该接口提供了三种方法:
commit:commit transaction roll back:roll back transaction get transaction:get transaction status Spring为不同的持久性框架提供了不同的PlatformTransactionManager接口实现:
DataSourceTransactionManager使用连接来控制JdbcTemplate和MyBatis事务:
打开事务connection . set auto commit(false);
提交事务connection . commit();
回滚事务connection . roll back();
交易经理的选择?
根据用户选择和使用的持久层技术,选择相应的事务管理器。
TransactionDefinition事务定义信息用于定义与事务相关的属性,并由事务管理器使用。
参考:spring-framework-4.2.4.RELEASE/docs/javadoc-api/index.html
该接口主要提供以下方法:
GetIsolationLevel:隔离级别获取
GetPropagationBehavior:传播行为获取
GetTimeout:获取超时(事务的有效期)
readonly是否只读(保存、更新、删除-对数据进行操作-使其读写、查询-将此属性设置为true,只读不写),事务管理器可以根据此返回值进行优化。
这些事务的定义信息可以在配置文件中进行配置和定制。
事务隔离级别
脏读:一个事务读取由另一个事务重写但尚未提交的数据。如果这些数据回滚,则读取的数据无效。
不可重复读取:在同一个事务中,多次读取相同数据的结果是不同的。换句话说,后续读取可以读取另一个事务已经提交的更新数据。相反,当“可重复读取”在同一个事务中多次读取数据时,可以保证读取的数据是相同的,即后续的读取无法读取另一个事务提交的更新数据。
魔读:一个事务读取几行记录后,另一个事务插入一些记录,魔读就发生了。在后面的查询中,第一个事务将找到一些以前不存在的记录。
事务ACID的四个特征——隔离导致问题——解决事务隔离级别的隔离问题
Mysql默认隔离级别REPEATABLE_READ
Oracle默认隔离级别READ_COMMITTED
事务传播行为传播行为
什么是交易的沟通行为?有什么效果?
事务传播行为用于解决事务管理的两个方法相互调用的问题。
业务层的两种方法所面临的事务问题:
有时候需要在同一个交易中(删除用户后,需要同时删除用户对应的订单,需要回滚交易,比如商城工作人员删除订单业务)。
有时不能在同一个交易中(取款是交易操作,打印回单是交易操作,比如ATM取款)!
7种类型的事务传播行为:
TransactionStatus事务状态
hibernate使用的Flush(),底层发出sql
HasSavepoint():确定是否有保留点。
IsCompleted():确定事务是否完成。
IsTransaction():确定当前事务是否是新事务。
IsRollbackOnly():确定事务是否只能回滚。
SetRollbackOnly():设置事务是否回滚。
Spring的两种事务管理方式Spring Spring支持两种事务管理方式。
1.程序化事务管理。通过TransactionTemplate手动管理事务。
在实际应用中很少使用,因为需要修改原代码,增加事务管理代码(侵入性)。
文件:http://www.yiibai.com/spring/programmatic_management.htm
第二,使用XML或注释来配置声明性事务。Spring的声明式事务是通过AOP(环绕通知)实现的。它经常在开发中使用(代码侵入最小)-推荐!
版权归作者所有:来自博主的苦糖?原创作品请联系作者授权转载,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。