事务(一)

事务


定义

多个指定的操作单元组成的合集,多个单元操作是整体不可分割的,要么操作成功,要么都不成功。

四个原则ACID

  1. Atomicity原子性 事务是不可分割的最小单位,事务内的操作要么全成功(commit),要么一个失败全部失败(rollback)。
  2. Consistency一致性 在事务执行前,数据库的数据处于正确的状态,而事务执行完成后。数据库的数据还应该是处于正确的状态,即数据完整性约束没有被破坏。
  3. Isolation隔离性 并发事务执行之间互不影响,在一个事务内部的操作对其他事务是不会产生影响的,这个需要事务隔离级别来指定隔离性。
    DEFAULT 使用数据库设置的隔离级别(默认),由DBA默认的设置来决定隔离级别
    READ_UNCOMMITTED 事务最低的隔离级别,允许别外一个事务可以拿到这个事务未提交的数据。这种隔离级别会出现脏读、不可重复读和幻读。
    READ_COMMITED 保证一个事务修改的数据提交后才能被另一个事务读取。另一个事务不能读取改事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻读。
    REPEATABLE_READ 保证一个事务不能读取另一个事务未提交的数据。这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻读。
    SERIALIZABLE 事务被处理为顺序执行,防止脏读、重复读和避免幻读。级别最高,花费代价最高,但最可靠。
    
  4. Durability持久性 事务一旦执行成功,它对数据库的数据的改变必须是永久的,不会因比如遇到系统故障或断电造成数据不一致或丢失。
事务分类

数据库事务

  1. 本地事务 普通事务,独立一个数据库,能保证在改数据库上操作的ACID
  2. 全局事务(分布式事务) 设计两个或多个数据源的事务,及跨越多台同类或异类数据库的事务(由每台数据库的本地事务组成),旨在保证这些本地事务的所有操作的ACID,是事务可以跨越多台数据库。
java事务

  1. JDBC事务 即数据库事务中的本地事务,通过connection对象控制管理
  2. JTA(java transaction api)事务 java事务api,是java ee数据库事务规范,只提供事务管理接口,由应用程序服务器厂商提供实现。jta事务比jdbc强大,支持分布式事务。
编程式事务和声明式事务

  1. 编程式事务 通过代码在业务执行是根据需要自行实现事务的commit和rollback,粒度更小,可用在代码块上。不可复用,重复的代码太多。
  2. 声明式编程 繁琐的有xml配置,简单粗暴的额直接使用@Transactional注解实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值