在 Java 中,事务通常被用来维护对数据库的更新操作的一致性和完整性。事务具有四个特性,称为 ACID 特性:
1.原子性(Atomicity):一个事务必须被视为一个不可分割的最小操作单元,事务中的所有操作要么全部完成,要么全部不完成。如果在事务执行过程中发生了错误,会被回滚(Rollback)到最初的状态,就像这个事务从来没有被执行过一样。
2.一致性(Consistency):在事务开始之前和事务结束之后,数据库必须处于一致的状态。在事务开始之前和事务结束之后,应该检查数据的约束,如唯一性、默认值等。如果数据在事务执行过程中被破坏了,事务会被回滚,以确保数据的一致性。
3.隔离性(Isolation):每个事务的执行应该与其他事务的执行相互隔离,即它们不能相互干扰。这意味着如果一个事务正在访问某个数据,另一个事务就不能同时访问这个数据,直到第一个事务完成并释放了对数据的锁定。在这种情况下,一个事务可能看不到另一个事务的结果,直到它已经完成。
4.持久性(Durability):一旦事务提交,它的结果应该是永久性的,即使系统故障也不应该影响事务的结果。这通常通过将事务的日志记录到磁盘中来实现,以便在系统崩溃时可以恢复事务。