应用JDBC事务
所谓事务,是指一组相互依赖的操作单元的集合,用来保证对数据库的正确修改,保持数据的完整性,如果一个事务的某个单元操作失败,将取消本次事务的全部操作。例如银行交易、股票交易和网上购物等,都需要利用事务来控制数据的完整性。比如将A账户的资金转入B账户,在A中扣除成功,在B中添加失败,导致数据失去平衡,事务将回滚到原始状态,即A中没少,B中没多。数据库事务必须具备以下特征(简称ACID)。
l 原子性(Atomic):每个事务是一个不可分割的整体,只有所有的操作单元执行成功,整个事务才成功;否则此次事务即为失败,所有执行成功的操作单元必须撤销,数据库回到此次事务之前的状态。
l 一致性(Consistency):在执行一次事务后,关系数据的完整性和业务逻辑的一致性不能被破坏。例如A与B转账结束后,资金总额是不能改变的。
l 隔离性(Isolation):在并发环境中,一个事务所做的修改必须与其他事务所做的修改相隔离。例如一个事务查看的数据必须是其他并发事务修改之前或修改完毕的数据,不能是修改中的数据。
l 持久性(Durability):事务结束后,对数据的修改是永久保存的,即使系统故障导致重起数据库系统,数据依然是修改后的状态。
数据库管理系统采用锁的机制来管理事务。当多个事务同时修改同一数据时,只允许持有锁的事务修改该数据,其他事务只能“排队等待”,直到前一个事务释放其拥有的锁。