Java-JDBC的事务处理

Java-JDBC的事务处理

Posted by Jinliang on September 20, 2017

JDBC的事务基本知识

事务的定义:一个事务是由一条或多条对数据库操作的sql语句所组成的一个不可分割的工作单元,只有当事务中的所有操作都正常执行后,整个事务才会提交给数据库。 结束事务的操作:commit()/rollback()。commit表示对事务的提交,rollback表示对事务的回滚,这两种方法都处于java.sql.Connection类中。 Q:通过什么方法保持对数据库的多次操作后,数据仍然保持一致? A:调用setAutoCommit(false)来控制防止自动提交,然后就可以把多个数据库的操作当成一个事物,在操作完成后调用commit()提交,如果中途出现问题,可以到用rollback()达到回滚的目的。


JDBC的事务隔离:

为了解决“多个线程请求相同的数据”的问题,事务之间会用锁相互隔离开来。现在不同的数据库支持不同的锁。JDBC API支持不同类型的事务,它们由Connection对象指派的。 JDBC支持以下5种事务隔离级别:

  1. TRANSACTION_NONE JDB。不支持事务
  2. TRANSACTION_READ_UNCOMMITTED。未提交读。说明在提交一个事物前一个事物可以看到另一个事务的变化。这样读“脏”数据、不可重复读和虚读都是允许的。
  3. TRANSACTION_READ_COMMITTED。已提交读。说明读取为提交的数据是不允许的。这个级别仍然允许不可重复读和虚读。
  4. TRANSACTION_REPEATABLE_READ。可重复读。虚读会出现。
  5. TRANSACTION_REPEATABLE。可序列化。都不允许。