什么是Java中的事务管理?
在文章中,我们将通过示例讨论Java中的事务管理。但是在讨论事务管理之前,我们应该知道什么是事务。因此,下面是一些关于事务的要点,以便更好地理解: 事务是程序执行的一段,它访问并可以更改不同的数据片段。 一致的数据库必须对事务可见。 在事务执行不一致期间,数据库可能会暂时不可用。 数据库在事务成功完成(提交)后更新,并且必须保持不变。 事务对数据库的修改在提交时完成。 多个事务可以同时运行。 有两个关键挑战需要解决:许多类型的故障,包括硬件问题和系统崩溃。许多事务的执行同时发生。 交易类型
每个SQL查询都将被视为 JDBC中事务 。使用JDBC创建的数据库连接将在自动提交模式下运行(自动提交值为TRUE)。SQL语句将在执行时自动提交。
有时,我们可能希望在多执行几次之后提交事务 SQL陈述式 执行。此时必须将auto-commit变量更改为False。它可以防止在运行所有查询之前提交数据。如果发生事务异常,我们可以回滚()修改并还原原始状态。使用 ACID特征 ,事务管理就能得到恰当的描述。 ACID属性
事务处理是 程序执行段 数据库系统必须确保以下几点,以保护数据完整性:
原子性: 事务的所有操作要么都在数据库中正确表示,要么都没有正确表示。事务管理组件使数据库保持最新。
一致性 :当一个事务被隔离执行时,数据库的一致性得以保持。这属于应用程序员的权限范围。
隔离度: 事务必须不注意同时运行的任何其他事务,即使许多事务可以同时执行。其他并发进行的事务必须看不到中间事务的结果。换句话说,对于每对事务Ti和Tj,Ti发现Tj在Ti开始之前完成了执行,或者Tj在Ti完成之后开始执行。并发控制管理器控制它。
耐用性: 当交易成功完成后,即使系统出现问题,数据库也会继续更新。作为康复协调员,您有责任这样做。
示例:
从账户A向账户B转账50美元的交易: 1.read(A)
2. A:= A - 20
3.写(A)
4.read(B)
5. B:= B + 20
6.写(B)
Atomicity 原子性要求 - 如果事务在第三步之后但在第六步之前失败,系统必须确保数据库尚未更新。因此,将出现不一致。
Consistency 一致性要求 - 一致性的条件是,当交易完成时,A和B的总和保持不变。
Isolation 隔离要求 - 如果允许另一个事务在步骤3和6之间访问部分修改的数据库,则它将遇到不一致的数据库(A和B的总和将低于它应该的值)。通过串行地或一个接一个地处理事务,可以快速地确保隔离。
Durability 耐久性要求 - 由事务进行的数据库更改必须承受失败,直到用户被通知事务已经完成(即,$20已经被转移)。 交易状态
Active( 活动的): Active是起始状态;在执行事务的同时维护它。
Partially Committed( 部分提交): 在最后一个语句完成后,事务被部分提交。
Failed( 未通过): 在意识到常规执行不再可能之后,
Aborted( 已中止): 该事务将回滚,数据库将返回到事务启动前的状态。
中止后,有两个选项:
仅当没有内部逻辑错误时,才能重新启动事务。 终止:终止交易。 已提交:成功完成后,即已提交。
事务处理管理中的前三个角色如下所示: Commit( 确认) : 我们希望在数据库中的更改在 SQL陈述式 已执行。调用commit()函数是必要的。提交通常是指对数据库进行永久性更改。这些更改不能撤消或撤销。但是,我们可以修改数据库数据。 Rollback(回滚) :Rollback会将所有的修改回复到最近一次的提交或指定的储存点。我们有时候会想要回复修改。例如,在单一巢状查询中,一个部分已经正确执行,而另一个部分却产生错误。如果此时发生例外状况,而我们想要回复第一个部分所做的修改,我们应该使用Rollback()函数。 Savepoint( 储存点) :储存点可让您在交易中建立检查点,并让您倒回至特定的储存点。一旦确认或倒回交易,为其建立的所有储存点都会立即删除,变成无用。 事务管理技术
五个技巧 管理交易 由连接接口提供。它们是:
1. setAutoCommit()方法
默认情况下,AutoCommit设置为TRUE。SQL语句将在执行时自动提交。我们可以使用setAutoCommit()函数将该值设置为AutoCommit。
2. Commit()方法
使用commit方法提交数据。commit是在执行SQL查询()之后使用的术语。SQL语句所做的修改将被提交。
语法:
con.commit();
3. Rollback()方法
在最后一次提交之前,可以使用rollback过程撤消修改。当SQL语句正在执行时,如果出现问题或异常。可以对事务执行rollback()。
语法:
con.rollback();
4. setSavepoint()方法
由于有了保存点,您可以更好地控制事务处理。在事务处理(SQL语句的集合)()中建立保存点时,您可以使用rollback()函数撤消保存点之前或之后所做的任何更改。可以使用setSavepoint()函数创建新的保存点。
5. releaseSavepoint()方法
使用它删除生成的保存点。
项目示例代码: import java.io.*;
import java.util.*;
import java.sql.*;
class TransactionManagement
{
public static void main(String[] args) throws Exception {
Connection connection = null;
Statement statement = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/user", "root","123456");
connection.setAutoCommit(false);
statement = connection.createStatement();
statement.executeUpdate("insert person values ("1","USA","JACK")")
connection.commit();
System.out.println("Transaction committed Successfully.");
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
connection.rollback();
}}}
天冷煮羊肉时,牢记3放4不放,放错了羊肉会发柴,腥味还大朋友们大家好,马上就要过年了,今天就让我来给你们分享一道羊肉汤的做法,如何?寒冷的冬季,能来上一碗热腾腾的羊汤,可是非常美味的哦。但是如何才能把羊肉煮得汤鲜味美,这就很讲究技巧了,
为什么我们蒸馒头有时候会塌陷?我们有时候想吃馒头,觉得市场上的不好吃,就自己动手蒸馒头,但是总有不尽人意的时候,总有几个或者整笼馒头塌陷的,还特别难吃,有些人会扔掉,也是一种损失和浪费。那为什么自己动手蒸馒头会
无淤不成斑,有淤必成斑,关于斑的那些事,都在这斑一直是女性的噩梦,明明从未疏忽对肌肤的呵护,可还是不能避免斑点的困扰,那么到底是什么原因导致女性长斑呢?一日长斑,终身祛斑今天我们一起找到问题的根源,彻底解决肌肤长斑的困扰!你脸
烂大街的下半身失踪别穿了,初春流行长裤短靴半裙丝袜,绝美新年了,大家都已经放假了吧,团圆的日子好吃的很多却也面临的长胖好几斤的压力呢,那自然很多露身材的穿搭也要收敛了呀,比如之前流行的下半身失踪,就很显胖,尤其对于微胖以及骨架子大的女性
陶瓷冰墩墩,福建手工制造!超30项黑科技助力冬奥福建人对北京冬奥有多热情?也许你在冬奥赛场上很难看到福建人的身影可是福建制造却是深度参与了北京冬奥!来自福建的30多项科技成果多项设计工艺从赛道装备纪念品到场馆直播服务从衣食住行到
刘少林是武大靖带刀侍卫吧!友谊第一,干韩国就是使命刘少林,知名匈牙利代表短道速滑选手。和武大靖也算是老朋友了吧,经常在比赛上见面的。刘少林有中国血统,一开口满嘴东北话。这小伙子不说话就很帅气,一说话就很搞笑。韩国短道速滑小动作不断
没必要再喷纳什了这场球纳什的想法应该是打快,对方核心约基奇体重大,进攻回合越多,越能消耗他们的体力。第一节开始便是这样执行,欧文持球,让米尔斯绕过双掩护接球投三分,欧文单挡后也会果断出手三分,格里
谷爱凌第二跳落地失误!现场观众齐喊加油2月7日,自由式滑雪女子大跳台资格赛在首钢大跳台举行。第一跳获得89分的中国选手谷爱凌,在第二跳落地时出现失误。记者在比赛现场看到,不少观众稍稍起身,关切地望向谷爱凌。而后,场内很
7种可以帮助控制血糖的午餐食谱,分享给您每天吃啥?这不光是很多普通人需要思考的问题,更是糖尿病人需要苦恼的问题,毕竟,普通人的吃喝可以随意,但糖友没吃好,就会影响血糖。第一天糖尿病午餐食谱今天的午餐一锅煮鱼丸儿肉丸6个,
蒸包子,记住要冷水上锅蒸!教你和面发面调馅方法,个个好吃导语蒸包子,记住要冷水上锅蒸!教你和面发面调馅方法,个个好吃春节期间,很多人都时间充裕,喜欢捣鼓一些美食,比如蒸包子,蒸好了高兴半天,蒸不好又继续去做,不知道你有没有这样?想要蒸出
三岁以前补脑很重要,宝宝补脑食谱当孩子3岁左右时,大脑发育已经达到高峰。即使宝宝的身高体重仍不断增加,但脑的重量的增加却很缓慢了。所以在胎儿时期和婴幼儿时期,要特别注意补充营养,让大脑在黄金阶段得到充足的营养。什