JDBC的事务基本知识
事务的定义:一个事务是由一条或多条对数据库操作的sql语句所组成的一个不可分割的工作单元,只有当事务中的所有操作都正常执行后,整个事务才会提交给数据库。
结束事务的操作:commit()
/rollback()
。commit表示对事务的提交,rollback表示对事务的回滚,这两种方法都处于java.sql.Connection
类中。
Q:通过什么方法保持对数据库的多次操作后,数据仍然保持一致?
A:调用setAutoCommit(false)
来控制防止自动提交,然后就可以把多个数据库的操作当成一个事物,在操作完成后调用commit()
提交,如果中途出现问题,可以到用rollback()
达到回滚的目的。
JDBC的事务隔离:
为了解决“多个线程请求相同的数据”的问题,事务之间会用锁相互隔离开来。现在不同的数据库支持不同的锁。JDBC API支持不同类型的事务,它们由Connection对象指派的。 JDBC支持以下5种事务隔离级别:
- TRANSACTION_NONE JDB。不支持事务
- TRANSACTION_READ_UNCOMMITTED。未提交读。说明在提交一个事物前一个事物可以看到另一个事务的变化。这样读“脏”数据、不可重复读和虚读都是允许的。
- TRANSACTION_READ_COMMITTED。已提交读。说明读取为提交的数据是不允许的。这个级别仍然允许不可重复读和虚读。
- TRANSACTION_REPEATABLE_READ。可重复读。虚读会出现。
- TRANSACTION_REPEATABLE。可序列化。都不允许。