数据库事务隔离级别
数据库事务:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全部不做,是一个不可分割的工作单位。
对数据库的操作全都是以事务的方式进行!
事务的开始和结束可以由用户显示的进行控制,如果用户没有显示的定义事务,则由数据库管理系统按默认规定自动化分事务。
事务的ACID特性:
①. 原子性(Acomicity):通俗的说就是该事务中包含的操作要么做,要么都不做。
②. 一致性(Consistency):事务执行的结果必须是由一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交 的结果时,就说数据库处于一致性状态。
③. 隔离性(Isolation):一个事务的执行不能被其他事务干扰。这就涉及到数据的个事务隔离级别。
④. 持久性()Durbility):也叫永久性,事务一旦成功提交,它对数据库的改变就是永久的。
接下来我们看看事务的生命周期:
下来我们看看事务隔离级别:
数据库 事务的隔离级别有4个,由低到高依次为 Read uncommitted 、 Read committed 、 Repeatable read 、 Serializable ,这四个级 别可以逐个解决 脏读 、 不可重复读 、 幻读 这几类问题。
下面我们就来看一下hibernate配置隔离级别:在Hibernate的配置文件中可以显式的设置隔离级别。每一种隔离级别都对应一个整数:
1:Read Uncommitted
2:Read Committed
4:Repeatable Read
8:Serializable
例如,以下代码把hibernate.cfg.xml文件中的隔离级别设为Read Committed:
hibernate.connection.isolation=2
对于从数据库连接池中获得的每个连接,Hibernate都会把它改为使用Read Committed隔离级别。
注:MySQL的默认隔离级别就是Repeatable read。
还没有评论,来说两句吧...