H5W3
当前位置:H5W3 > 其他技术问题 > 正文

JDBC事务编程模型备忘

    在Spring一统天下的情况下,JDBC快没有生存余地了。不过JDBC还是Java操作数据库的基础,现在Java项目中JDBC的应用快绝迹了,有必要对JDBC的事务编程模型做个象征性的总结。

    下面是示例,保证代码可以编译,但不保证能运行,呵呵。

import java.sql.*; /** * JDBC编程事务控制模型备忘 * * @author : leizhimin,2008-8-21 14:48:42。<p> */ public class JdbcTxText {     public static void main(String[] args) {         test();     }     public static void test() {         Connection conn = null;         //定义一个回滚点         Savepoint savepoint1 = null;         try {             //获取一个数据库连接             conn = DriverManager.getConnection(“url”, “user”, “password”);             //设置不自动提交,相当于开启了事务             conn.setAutoCommit(false);             //设置JDBC事务的级别             conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);             //创建一个用于执行静态 SQL 语句并返回它所生成结果的对象             Statement stmt = conn.createStatement();             //执行连个SQL语句,在同一个事务中             stmt.executeUpdate(“insert into test values(1,’aaa’)”);             //定义一个回滚到(保存点)savepoint1,在事务失败的时候,可以回滚到定义的回滚点             savepoint1 = conn.setSavepoint(“insert_end”);             stmt.executeUpdate(“update test set name = ‘bbb’ where id =1”);             //提交事务             conn.commit();         } catch (SQLException e) {             try {                 //当事务失败时候,回滚到(保存点)savepoint1                 conn.rollback(savepoint1);                 // 当本事务中的插入和更新SQL其中一个执行异常的时候,整个事务回滚                 //conn.rollback();             } catch (SQLException e1) {                 throw new RuntimeException(“回滚事务发生异常!”, e);             }             throw new RuntimeException(“执行事务发生异常!”, e);         } finally {             if (conn != null) {                 try {                     conn.close();                 } catch (SQLException e) {                     throw new RuntimeException(“关闭数据库连接发生异常!”, e);                 }             }         }     } }

 
上面代码中:
        //设置JDBC事务的级别        conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
        //当事务失败时候,回滚到(保存点)savepoint1        conn.rollback(savepoint1);
    JDBC的事务级别设置,保存点(或回滚点)的设置与数据库和JDBC的驱动的实现有关系,并非完全支持,但是不支持也不会出错。

本文地址:H5W3 » JDBC事务编程模型备忘

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址