美文网首页大数据开发
大数据编程:Java基础之JDBC事务处理

大数据编程:Java基础之JDBC事务处理

作者: 成都加米谷大数据 | 来源:发表于2021-06-24 17:37 被阅读0次

    JDBC是Java基础当中的一个重难点,在早期的入门学习阶段,要把JDBC吃透,对于之后的学习,依据数据库学习,都是有帮助的。之前我们对JDBC也做过一些相关的介绍,今天的大数据编程学习分享,我们主要来讲讲JDBC事务处理的部分。

    JDBC事务,就是在Java中用来控制数据库事务的。JDBC的一切行为包括事务是基于一个Connection的,在JDBC中是通过Connection对象进行事务管理。在JDBC中,常用的和事务相关的方法是: setAutoCommit、commit、rollback等。

    JDBC事务的定义

    关于JDBC的事务,相对来说比较简单,主要就是通过JDBC API来控制数据库的事务执行。

    下面看一个简单的JDBC事务代码:

    public void JdbcTransfer() {

        java.sql.Connection conn = null;

         try{

            conn = conn =DriverManager.getConnection("jdbc:oracle:thin:@host:1521:SID","username","userpwd");

             // 将自动提交设置为 false,

             //若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交

             conn.setAutoCommit(false);

             stmt = conn.createStatement();

             // 将 A 账户中的金额减少 500

             stmt.execute("\

             update t_account set amount = amount - 500 where account_id = 'A'");

             // 将 B 账户中的金额增加 500

             stmt.execute("\

             update t_account set amount = amount + 500 where account_id = 'B'");

             // 提交事务

             conn.commit();

             // 事务提交:转账的两步操作同时成功

         } catch(SQLException sqle){           

             try{

                 // 发生异常,回滚在本事务中的操做

                conn.rollback();

                 // 事务回滚:转账的两步操作完全撤销

                 stmt.close();

                 conn.close();

             }catch(Exception ignore){

             }

             sqle.printStackTrace();

         }

    }

    上面的代码实现了一个简单的转账功能,通过事务来控制转账操作,要么都提交,要么都回滚。

    JDBC事务的优缺点

    JDBC为使用Java进行数据库的事务操作提供了最基本的支持。通过JDBC事务,我们可以将多个SQL语句放到同一个事务中,保证其ACID特性。JDBC事务的主要优点就是API比较简单,可以实现最基本的事务操作,性能也相对较好。

    但是,JDBC事务有一个局限:一个 JDBC 事务不能跨越多个数据库!所以,如果涉及到多数据库的操作或者分布式场景,JDBC事务就无能为力了。于是又有了JTA事务。

    为什么需要JTA

    通常,JDBC事务就可以解决数据的一致性等问题,鉴于他用法相对简单,所以很多人关于Java中的事务只知道有JDBC事务,或者有人知道框架中的事务(比如Hibernate、Spring)等。但是,由于JDBC无法实现分布式事务,而如今的大数据分布式场景越来越多,所以,JTA事务就应运而生。

    JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。下列任一个Java平台的组件都可以参与到一个JTA事务中:JDBC连接、JDO PersistenceManager 对象、JMS 队列、JMS 主题、企业JavaBeans(EJB)、一个用J2EE Connector Architecture 规范编译的资源分配器。

    JTA和它的同胞Java事务服务(JTS:Java TransactionService),为J2EE平台提供了分布式事务服务。不过JTA只是提供了一个接口,并没有提供具体的实现,而是由J2EE服务器提供商根据JTS规范提供的,常见的JTA实现有以下几种:

    1.J2EE容器所提供的JTA实现(JBoss)

    2.独立的JTA实现:如JOTM,Atomikos.这些实现可以应用在那些不使用J2EE应用服务器的环境里用以提供分布事事务保证。如Tomcat,Jetty以及普通的java应用。

    JTA事务相对复杂,可以用于处理跨多个数据库的事务,是分布式事务的一种解决方案。而在大数据当中,分布式场景需求较多,对于JTA这部分也建议大家有相应的理解和掌握。

    关于大数据编程学习,Java基础之JDBC事务处理,以上就为大家做了基本的介绍了。JDBC事务处理,首先需要大家对事务这个概念定义搞清楚,其次再落实到JDBC当中去,逐步深入,多多练习。

    相关文章

      网友评论

        本文标题:大数据编程:Java基础之JDBC事务处理

        本文链接:https://www.haomeiwen.com/subject/atpoyltx.html