标签:还需要 com 事务隔离级别 mtr 提交 scom 事务 connect strong
事务:正确执行一系列操作(或动作),使得数据库从一种状态转移成另一种状态,保证操作全部成功,或者全部失败
事务原则:服从ISO/IEC指定的ACID原则
ISO/IEC:14443 识别卡 -- 非接触式集成电路卡
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
DataSource
Java事务:在Java编写的程序或者系统中,实现ACID的操作
实现范围:
通过JDBC相应方法间接实现对数据库的增删改查,把事务转移到Java代码中控制,确保事务要么全部执行成功,要么撤销不执行
总结:Java事务机制和原理就是确保数据库操作的ACID特性
Java事务类型:
JDBC事务:Connection对象控制,包括手动模式和自动模式---------局限在一个数据库连接,但是使用简单
JTA(Java Transaction API)事务:与实现无关,与协议无关的API------------功能强大,可跨越数据库或DAO,使用复杂
容器事务:应用服务器提供,且大多基于JAT完成(通常基于JNDI,API复杂)-----------J2EE应用服务器提供的事务管理,局限于EJB
脏读
不可重复读
幻读
Oracle的”readOnly”没有作用,不影响增删改查
MySQL的”readOnly”为true,只能查,增删改抛出异常
默认情况下,事务遇到运行期异常才会回滚,而在遇到检查型异常不回滚
自定义:
1、 声明事务在遇到特定的检查型异常时像遇到运行时异常那样回滚
2、 声明事务在遇到特定的异常不回滚,即使是运行时异常
通过事务管理器获得TransactionAtatus实例
控制事务在回滚或者提交的时候需要应用对应的事务状态
Spring事务接口
1、 类似应用JTA UserTransaction API方式,异常处理更简洁
2、 核心类:spring事务管理的三个接口类以及JDBC template类
JDBC Template类
1、 需要有效的数据源,具体数据源根据实际情况创建
2、 创建编程事务管理对象
定义TransactionTemplate
使用TransactionTemplate
有返回值
没有返回值
如果需要处理异常
3、 业务逻辑:基于JDBC template完成业务处理
1、 添加schema
2、 定义事务管理器
3、 定义事务Advice
<tx:method/>
Name:匹配的函数名称、支持*匹配
Propagation:事务传播行为
Isolation:事务隔离级别
Timeout:超时
Read-only:是否只读事务
Rollback-for:触发回滚的异常,逗号分隔
No-rollback-for:不触发回滚的异常,逗号分隔
4、 定义pointcut
注意:注入事务的类,还需要注入DataSource的属性
1、 添加schema
2、 定义事务管理器
3、@Transactional
value:使用的TransactionManager
propagation:事务传播行为
isolation:事务隔离级别
timeout:超时
readOnly:是否只读事务
RollbackFor:触发回滚的异常类对象数组
RollbackForClassName:触发回滚的异常类名称数组
noRollbackFor:不触发回滚的异常类对象数组
noRollbackForClassName:不触发回滚的异常类名称数组
5种:独立代理;共享代理;拦截器;(这三种2.0版本之后不推荐使用)
Tx拦截器;全注释
编程式事务在代码量比较小的时候使用,声明式事务在事务操作量多时候常常使用
标签:还需要 com 事务隔离级别 mtr 提交 scom 事务 connect strong
原文地址:https://www.cnblogs.com/thyHome/p/9075017.html