本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。