这篇文章主要介绍下事务的特性及概念,为后面的学习打下基础。
一、事务的概念
摘自百度百科:
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
中,一个事务可以是一条SQL语句,一组SQL语句
或整个程序。
二、事务的特性
原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据需要相互隔离。
持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。
一致性:几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
三、事务的隔离级别
首先介绍几个概念:
脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。
幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了,再后来的查询中,第一个事务就会发现有些原来没有的记录。
针对以上出现的问题,事务的隔离级别就是解决上述问题的。Spring中提供了一个default,是底层数据库默认的隔离级别。