一、事务特性
A 原子性:最小不可分割的单位(要么全成功,要么全失败)
B 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
比如转账,转账前两个账户的余额是1000,转账后两个账户的余额也是1000。
C 隔离性:多线程环境下,一个线程中的事务不能被其他线程中的事务打扰。
D 持久性:事务一旦提交,就应该被永久保存起来。
二、事务并发问题
A 脏读:读到了其他人正在操作的数据。
B 不可重复读:两次连续的读取,数据不一致。
C 幻(虚)读:一个线程中的事务读取到另一个线程中insert提交的数据。
三、事务的隔离级别(用来解决事务并发问题)
A 读未提交——可能出现 ABC
B 读已提交——BC
C 可重复读——C (MySQL默认级别)
D 串行化——没有问题,效率太低
四、在Hibernate中指定数据库的隔离级别
#hibernate.connection.isolation 1|2|4|8
使用一个字节指定隔离级别
0001 —— 1 (读未提交)
0010 —— 2 (读