事务特性(ACID)
ACID即:事务的原子性、一致性、独立性及持久性- 事务的原子性:是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成.
- 事务的一致性:是指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变.
- 事务的独立性:是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不一致.
- 事务的持久性:是指事务运行成功以后,就系统的更新是永久的.不会无缘无故的回滚.
数据库的隔离级别:
- Read Uncommited(未提交读):没有提交就可以读取到数据(发出了Insert,但没有commit就可以读取到。)很少用
- Read Commited(提交读):只有提交后才可以读,常用,
- Repeatable Read(可重复读):mysql默认级别, 必需提交才能见到,读取数据时数据被锁住。
- Serialiazble(序列化读):最高隔离级别,串型的,你操作完了,我才可以操作,并发性特别不好
不考虑事务的隔离性,会产生如下问题:
- 脏读:一个事务读取到另一个事务的未提交数据。
- 不可重复读:一个事务读取到另一个事务提交的数据(主要是指update操作),会导致两次读取的结果不一致。
- 虚读(幻读):一个事务读取到另一个事务提交的数据(主要是指insert操作),会导致两次(也有可能是多次)读取结果不一致
Hibernate中设置事务隔离级别
Hibernate框架中可通过配置文件添加如下配置来设置事务的隔离级别,
<property name="hibernate.connection.isolation">2</property>
它可取的值有1、2、4、8:- 1代表的事务隔离级别为READ UNCOMMITTED
- 2代表的事务隔离级别为READ COMMITTED
- 4代表的事务隔离级别为REPEATABLE READ
- 8代表的事务隔离级别为SERIALIZABLE
Hibernate事务管理
最新推荐文章于 2023-02-02 10:26:43 发布