一、什么是Java事务
通常的观念认为,事务仅与数据库相关。
事务必需听从ISO/IEC所制定的ACID准绳。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的形态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的形态都应该正确。
粗浅的了解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若由于某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。
既然事务的概念从数据库而来,那Java事务是什么?之间有什么联络?
实践上,一个Java应用零碎,如果要操作数据库,则通过JDBC来完成的。添加、修改、删除都是通过相应方法间接来完成的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习气上就称为Java事务。
二、为什么需求事务
事务是为解决数据平安操作提出的,事务控制实践上就是控制数据的平安访问。具一个复杂例子:比如银行转帐业务,
什么牌子的鼠标好账户A要将自己账户上的1000元转到B账户上面,A账户余额首先要减去1000元,然后B账户要添加1000元。假如在中间网络出现了问题,A账户减去1000元已经结束,B由于网络中断而操作失败,那么整个业务失败,必需做出控制,要求A账户转帐业务撤销。这才干保证业务的正确性,完成这个操走就需求事务,将A账户资金增加和B账户资金添加方到一个事务里面,要么全部执行成功,要么操作全部撤销,这样就坚持了数据的平安性。
三、Java事务的类型
Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。
1、JDBC事务
JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务形式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
运用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺陷是事务的范围局限于一个数据库衔接。一个 JDBC 事务不能跨越多个数据库。
2、JTA(Java Transaction API)事务