事务
什么是事务
一个程序执行访问或更新数据库时,要么全部执行,要么全都不执行,保证数据的一致性和完整性。
事务的类型有三种:
- JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。
- JTA(Java Transaction API)事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。
- 容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用
事务的特性 (4个-- ACID)
- 原子性(Atomicity)
原子性是指强调事务作为原子级别已经不可以再被分割,要么成功要么失败,如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 - 一致性(Consistency)
一致性是状态转换必须是由一种正确的状态转换到另外一种正确的状态,一个事务执行之前和执行之后都必须处于一致性状态。 - 隔离性(Isolation)
隔离性是当并发访问时,每一个开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离,即相互间必须不能被影响。 - 持久性(Durability)
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
事务引发的问题
- dirty reads 脏读
一个事务正在对