spring的事务管理机制是基于什么实现的,spring的事务管理机制是基于

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: