`
gongsy
  • 浏览: 105209 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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的驱动的实现有关系,并非完全支持,但是不支持也不会出错。
分享到:
评论

相关推荐

    java 数据库编程

    ### Java数据库编程知识点详解 #### 一、Java在企业级应用中的角色 - **企业级应用的特点**:企业级应用通常具有高度复杂性、高可用性、安全性等特性。它们通常涉及多用户环境下的数据处理任务,如事务管理、安全...

    Spring 备忘 (一)

    这个备忘系列将探讨 Spring 的主要组成部分和使用方法。 **IoC 容器** IoC 是 Spring 的核心概念,它通过反转对象创建和管理的控制权,使得开发者不再手动实例化对象,而是由框架负责对象的生命周期。Spring 提供...

    精选_基于Jsp和MySQL实现的个人记事备忘系统_源码打包

    【标题】"精选_基于Jsp和MySQL实现的个人记事备忘系统_源码打包"揭示了这个项目的核心——一个使用JSP(JavaServer Pages)技术和MySQL数据库构建的个人记事本或备忘录应用。这样的系统允许用户在线创建、编辑、存储...

    SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)

    2. **Spring2.5**:Spring框架是Java企业级应用的核心框架,提供了依赖注入、面向切面编程、事务管理等功能。其核心模块包括`spring-aop.jar`、`spring-beans.jar`、`spring-context.jar`、`spring-core.jar`、`...

    java面试800题

    template模板方法模式、memento备忘录模式、observer观察者模式、command命令模式、state状态模式、strategy策略模式、mediator调停者模式、interpreter解释器模式、visitor访问者模式、chain of responsibility责任...

    java开发面试合集-自己整理

    - JPA和JDBC:了解JPA的规范和实现,对比JDBC的使用。 6. **设计模式** - 创建型模式:如单例、工厂、抽象工厂、建造者、原型模式。 - 结构型模式:如代理、装饰、适配器、桥接、组合、外观、享元模式。 - 行为...

    个人生活助手——java

    在IT行业中,Java是一种广泛应用的高级编程语言,以其“一次编写,到处运行”的特性而闻名。在这个名为“个人生活助手——java”的项目中,我们显然看到了Java技术在构建一个全面的个人服务应用上的运用。下面将详细...

    509道Java面试题汇总与解析.zip

    4. 数据库相关:JDBC操作、事务管理、索引优化、数据库设计原则等。 最后,实战经验也很重要,如: 1. 性能优化:代码优化、数据库查询优化、系统调优等。 2. 分布式系统:微服务架构、分布式缓存、消息队列...

    JAVA夜未眠面试题型

    11. **数据库相关**:SQL查询优化,事务管理,JDBC操作,以及对NoSQL数据库的理解。 12. **网络编程**:TCP/IP协议,HTTP协议,Socket编程,网络通信的基本原理。 13. **性能优化**:包括代码优化、JVM参数调整、...

    日历记事本

    【日历记事本】是一款基于Java编程语言开发的应用程序,它将传统的日历与记事本功能结合在一起,提供了一种高效、便捷的方式来管理个人事务和安排日程。这款软件设计的核心目标是帮助用户轻松地记录日常生活中的事件...

    java面试宝典-自用

    12. **数据库相关**:SQL查询优化,事务处理(ACID属性),索引原理,JDBC操作,以及对常见数据库如MySQL、Oracle的理解。 13. **设计原则与模式**:深入理解SOLID设计原则,如单一职责原则、开闭原则、里氏替换...

    Java 最常见 200+ 面试题全解析:面试必备

    Java作为一门广泛使用的编程语言,其面试题涵盖了基础语法、面向对象、集合框架、多线程、网络编程、异常处理、JVM、设计模式、数据库交互、Spring框架等多个方面。以下是对这些知识点的详细解析: 1. **Java基础**...

    疯狂Java面试题

    - JDBC:数据库连接,事务管理,预编译语句。 10. **设计模式** - 创建型模式:单例、工厂、抽象工厂、建造者、原型。 - 结构型模式:适配器、装饰器、桥接、组合、外观、代理、享元。 - 行为型模式:策略、...

    java笔试题,面试题,ssh大全

    J2EE提供了一系列标准和技术,包括但不限于JDBC(Java Database Connectivity)、JNDI(Java Naming and Directory Interface)、RMI(Remote Method Invocation)、JMS(Java Messaging Service)、EJB(Enterprise...

    超级有影响力霸气的Java面试题大全文档

    31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?  SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建...

Global site tag (gtag.js) - Google Analytics