java 事务详解及简单应用实例分析,java 事务详解及简单应用实例教学,Java 事务详解及简单应用实例

java 事务详解及简单应用实例分析,java 事务详解及简单应用实例教学,Java 事务详解及简单应用实例

本文主要介绍java事务的详细解释和简单应用实例的相关资料。Java事务可以保证数据的完整性和一致性,这当然是书本上的知识。这里举例说明如何应用,有需要的朋友可以参考一下。

Java事务的简单使用

Java事务在一些面试中会被问到。

面试时,我们首先要回答的是:事务可以保证数据的完整性和一致性。

如果你比较熟练:说一些原则(设置在任务开始前不提交任务,在所有任务完成后再提交任务,

如果任务中途断开,回滚并取消之前的任务),举个简单的例子(比如存钱取钱)。

比如银行在两个账户之间转账,从账户A转到账户B 1000元。系统先减少A账户的1000元,再给b账户加1000元,如果全部执行成功,数据库一致;如果只修改账户A的金额而不增加账户B的金额,数据库会处于不一致的状态,这时需要取消之前的操作。)

本文就java事务做一个简单的探讨。当我们问到java事务时,我们需要知道它与数据库有关。

首先,看一个简单的代码。

使用JDBC方法的交易处理

公共int删除(int sID) {

//实现数据库连接的类

database connection DBC=new database connection();

//获取连接对象

connection con=DBC . getconnection();

尝试{

con . set auto commit(false);//更改JDBC事务的默认提交方法

DBC . execute update(' delete from Xiao where ID=' sID);

DBC . execute update(' delete from Xiao _ content where ID=' sID);

DBC . execute update(' delete from Xiao _ affix where by lawid=' sID);

con . commit();//提交JDBC事务

con . set auto commit(true);//恢复JDBC事务的默认提交方法

DBC . close();

返回1;

}

catch(异常exc) {

con . roll back();//回滚JDBC事务

DBC . close();

return-1;

}

}

上面的代码是一个简单的java事务执行。

以上三个删除操作,只要有一个失败,就会进行任务回滚,相当于要么一起成功,要么什么都没有。

如果没有事务管理,以前的执行将立即在数据库中更新,

执行失败的地方就退出,不再执行后面的任务,无法保证数据的一致性。

二Java事务的基础概念

原子性(Atomicity) :交易为完整操作。事务操作的每一步都是不可分的(原子的);

要么全做,要么不全做。

一致性(Consistency):事务完成时,数据必须处于一致状态。

隔离性(Isolation) :所有修改数据的并发事务都是相互隔离的,这意味着事务必须是独立的,

它不应以任何方式依赖或影响其他事务。

持久性:事务完成后,它对数据库的修改将永久保存,事务日志可以永久保存事务。

Java事务描述:如果多次操作数据库,每次执行或步骤都是一个事务。

如果某个数据库操作没有执行或者某个步骤出现异常,导致事务失败,那么一些事务会被执行,而另一些则不会。

因此,事务被回滚,先前的操作被取消。

在数据库操作中,事务是指由一个或多个更新数据库的sql语句组成的不可分割的工作单元。

只有当事务中的所有操作都正常完成后,才能将整个事务提交给数据库。如果一个操作没有完成,

整个交易必须撤销。

例如,在银行转账交易中,假设张三从自己的账户转账1000元到李四的账户,相关的sql语句如下:

更新帐套monery=monery-1000,其中name='张三'

更新帐套monery=monery 1000,其中name='lisi '

这两个报表必须被视为一个完整的交易。只有当两项都成功执行时,才能提交该事务。

一句话不行,就要取消整个交易。

有三种方法可以控制连接类中的事务:

(1)设置自动提交(布尔自动提交):设置是否自动提交事务;

commit();提交交易;

roll back();撤消交易记录;

在jdbc api中,默认情况是自动提交事务,也就是说,每个更新到数据库的sql语句代表一个事务。

操作成功后,系统自动调用commit()提交,否则调用rollback()撤销事务。

在jdbc api中,可以通过调用setAutoCommit(false)来禁止事务的自动提交。

然后可以把更新数据库的多个sql语句当作一个事务,在所有操作完成后调用commit()作为一个整体提交。

如果其中一个sql操作失败,将不会执行commit()方法,但是会生成相应的sqlException。

此时,您可以捕捉异常代码块并调用rollback()方法来撤销事务。

一般来说,专门开发数据库的开发人员必须对事务有深刻的理解,

但是一般程序员不需要在这上面花太多时间。对大致功能有个了解就行了。

感谢您的阅读,希望能帮到您,也感谢您对本站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: