【最近在准备面试,所以打算把所有答案都整理一遍,以供自己复习,进行知识的系统化梳理】
在java操作数据库的时候,我们首先会想到Hibernate框架,它操作数据库的时候,和Spring框架配合使用,它需要使用的就是spring的声明式事务管理,操作要么成功,要么失败,失败的话就要进行rollback();以保证事务的一致性,有增必有减。
JAVA中事务的属性ACID;
一、隔离性(ISOLATION):
在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
二、一致性(CONSISTENCY):
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态。举个例子,在关系数据库的情况下,
一个一致的事务将保护定义在数据上的所有完整性约束。
三、原子性(ATOMICITY):
一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
四、 持久性(DURABILITY):
一个被完成的事务的效果应该是持久的。