JDBC处理事务的方法

来源:互联网 发布:日式风格女装 淘宝 编辑:程序博客网 时间:2024/05/22 06:34

JDBC中通常使用setAutoCommit(false)禁止自动提交,然后将多个数据库表达式作为1个事务,显式调用commit()方法提交。如有表达式操作失败则抛出异常,在异常捕获块中调用rollback()方法回滚。

4个读一致性问题:
脏读:一个事务读到了另一事务的未提交事务。
不可重复读:一个事务前后两次读到不同数据。
虚读:一个事务前后两次查询结果数量不同。
丢失修改:两个事务读入同一事务进行修改。T2提交的结果破坏了T1提交的结果。

JDBC中的5个事务隔离级别:事务的隔离是为了解决多个线程同时访问相同数据的问题。
TRANSACTION_NONE_JDB不支持事务。
TRANSACTION_READ_UNCOMMITED未提交读。此级别允许脏读、不可重复读、虚读。
TRANSACTION_READ_COMMITED已提交读。此级别允许脏读,而不允许不可重复读、虚读。
TRANSACTION_REPEATABLE_READ可重复读。解决了不可重复读,仍有虚读的现象。
TRANSACTION_SERIALIZABLE可序列化。事务最高隔离级别,可以防止脏读、不可重复读、虚读。
事务隔离级别越高,则为避免冲突的资源消耗越高。通过Connection对象的conn.getTransactionIsolation()方法确定事务隔离级别,通过conn.setTransactionLevel()设置隔离级别。

0 0
原创粉丝点击