1.什么是事务?

  通常的观念认为,事务仅与数据库相关。

  通俗来说,事务就是一组绑定在一起的原子操作,那原子操作又是什么,所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切[1]  换到另一个线程)。可以理解为一个必须完整完成的操作单元,而事务就是一组这样的操作绑在一起,要么全部执行成功,要么都不成功。那你可能会问,那它怎么保证这一致性的,其实就是当中间有出错的时候,可以执行一个操作,就是事务回滚,撤回之前的部分操作。

  最简单来说,就是一组共进退的操作,特点是完整性和一致性。

2.那数据库事务和Java事务又是什么?他们有什么区别?

  其实上面事务的概念是来自数据库,简单来说,数据库的事务就是一组具有一致性的SQL语句,而很多数据库是支持事务管理,比如MYSQL。

  而JAVA事务,实际上就是通过Java代码来管理数据库操作的事务,因为后面我们通过JDBC来操作数据库,也就是通过JAVA方法间接管理,所以相应的事务就转移到JAVA代码。

3.那为什么要使用事务?  

  事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。

  举一个简单例子:

  比如银行转帐业务,账户A要将自己账户上的1000元转到B账户下面,A账户余额首先要减去1000元,然后B账户要增加1000元。假如在中间网络出现了问题,A账户减去1000元已经结束,B因为网络中断而操作失败,那么整个业务失败,必须做出控制,要求A账户转帐业务撤销。这才能保证业务的正确性,完成这个操走就需要事务,将A账户资金减少和B账户资金增加方到一个事务里面,要么全部执行成功,要么操作全部撤销,这样就保持了数据的安全性 。

  今天就先简单介绍事务的基本概念,以后再具体举一些代码来说明~