当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>J2EE

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的驱动的实现有关系,并非完全支持,但是不支持也不会出错。
相关内容
赞助商链接