Java与Oracle实现事务(JDBC事务)实例详解

 更新时间:2017年05月28日 10:12:03   作者:claireyuancy  
这篇文章主要介绍了Java与Oracle实现事务(JDBC事务)实例详解的相关资料,需要的朋友可以参考下

Java与Oracle实现事务(JDBC事务)实例详解

J2EE支持JDBC事务、JTA事务和容器事务事务,这里说一下怎样实现JDBC事务。

       JDBC事务是由Connection对象所控制的,它提供了两种事务模式:自己主动提交和手动提交,默认是自己主动提交。

       自己主动提交就是:在JDBC中。在一个连接对象Connection中。默认把每一个SQL语句的运行都当做是一个事务(即每次运行完SQL语句都会马上将操作更新到数据库)。

       手动提交就是:当须要一次性运行多个SQL语句,将多个SQL语句组成一个事务(即要么都成功,要么回滚全部的操作)时,就得手动提交。

        看一个样例:       

import java.sql.*;

public class TransactionTest{

public static void main(String[] args) throws SQLException {
 try {
     Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","TransactionTest","123456");
  
        //将事务模式设置为手动提交事务:
        conn.setAutoCommit(false);
  
        //设置事务的隔离级别。
        conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
        
 //运行插入操作
        String sqlInsert = "insert into t_user(userName,userPassword) values(?,?
)";        
        pstmt = conn.prepareStatement(sqlInsert);
        pstmt.setString(1, "danny");
        pstmt.setString(2, "123");
        pstmt.executeUpdate();
  
 //运行改动操作
        String sqlUpdate = "update t_user set userPassword=? where userName = ?";
        pstmt = conn.prepareStatement(sqlUpdate);
        pstmt.setString(1, "123456");
        pstmt.setString(2, "danny");        
        pstmt.executeUpdate();
  
        //提交事务
        conn.commit();
  
      } catch (Exception e) {        
        // 若事务发生异常,回滚事务
        conn.rollback();
      }finally{        
        if (pstmt!=null) {
          pstmt.close();
        }
        if (conn!=null) {
          conn.close();
        }
      }
}
}

       当须要插入和更新这两个操作同一时候运行时,要么两个操作都成功,假设有一个失败。则撤销全部的操作。

       宏观来看须要例如以下四个步骤:    

       1、将事务模式设置为手动提交事务:

             conn.setAutoCommit(false);

       2、设置事务的隔离级别:

             conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

       3、提交事务:

             conn.commit();

       4、假设发生异常,回滚事务:

             conn.rollback();

       从上面看,JDBC事务使用较为方便,但因为它是由Connection对象所控制的,所以它的缺点是事务的范围仅仅局限于一个数据库的连接,同一个事务中无法操作多个数据库。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • SpringBoot中注册过滤器的几种实现方式

    SpringBoot中注册过滤器的几种实现方式

    本文主要介绍了SpringBoot中注册过滤器的几种实现方式,主要介绍了三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • Java实现SHA-1算法实例

    Java实现SHA-1算法实例

    这篇文章主要介绍了Java实现SHA-1算法,实例分析了java实现SHA-1算法的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 关于springboot-starter-undertow和tomcat的区别说明

    关于springboot-starter-undertow和tomcat的区别说明

    这篇文章主要介绍了关于springboot-starter-undertow和tomcat的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java多线程中的异常处理机制简析

    java多线程中的异常处理机制简析

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉,需要了解的朋友可以参考下
    2012-11-11
  • java web服务器实现跨域访问

    java web服务器实现跨域访问

    这篇文章主要为大家详细介绍了java web服务器实现跨域访问,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 解析Java编程中对于包结构的命名和访问

    解析Java编程中对于包结构的命名和访问

    这篇文章主要介绍了Java编程中对于包结构的命名和访问,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-12-12
  • springboot+springsecurity+mybatis+JWT+Redis 实现前后端离实战教程

    springboot+springsecurity+mybatis+JWT+Redis 实现前后端离实战教程

    这篇文章主要介绍了springboot+springsecurity+mybatis+JWT+Redis 实现前后端离实战教程,需要的朋友可以参考下
    2024-01-01
  • Java中的throws关键字处理异常的最佳实践记录

    Java中的throws关键字处理异常的最佳实践记录

    在Java编程中,异常处理是保证程序健壮性和稳定性的重要手段,除了使用try-catch块捕获异常外,Java还提供了throws关键字,允许我们将异常抛给调用者处理,本文介绍Java中的throws关键字处理异常的最佳实践记录,感兴趣的朋友一起看看吧
    2025-01-01
  • java解决Feign异步情况丢失上下文问题

    java解决Feign异步情况丢失上下文问题

    在微服务的开发中,我们经常需要服务之间的调用,本文主要介绍了java解决Feign异步情况丢失上下文问题,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Java数据类型实现自动与强制转换的示例代码

    Java数据类型实现自动与强制转换的示例代码

    Java数据类型之间的转换有自动转换和强制类型转换,这篇文章主要给大家介绍Java数据类型如何实现自动转换与强制转换,需要的朋友可以参考下
    2023-05-05

最新评论