Hibernate——事务
2015-11-22 15:10
302 查看
事务:要么同时完成,要么同时都不完成。
事务的特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
脏读:读了另一个事务没有提交的数据
不可重复读:在同一个事务中,对同一个数据读两次的结果不同
幻读:一个事务在读的过程中,有另一个事务执行了插入或删除数据,影响了读的结果
数据库的事务隔离级别:
·read-uncommitted:读未提交的。会出现脏读、不可重复读、幻读
·read-committed:读已提交的。避免了脏读,但会出现不可重复读、幻读(一般选择)
·repeatable-read:可重复读。相当于对数据加了一把锁
·serial:序列化,一个一个排队来
悲观锁:
在读取数据时,数据库对数据加锁,使其他事物不能修改该数据
方法:
乐观锁:
给数据加一个字段, 代表他的版本字段,一旦数据被更改,则该字段自动+1。在更新数据时,会比较新的数据和旧数据的版本,若一致,则可以修改;若不一致,则代表数据被修改过。
方法:
在类中加一个版本属性,但不要指定值。并在该属性的getXXX()方法上注解
事务的特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
脏读:读了另一个事务没有提交的数据
不可重复读:在同一个事务中,对同一个数据读两次的结果不同
幻读:一个事务在读的过程中,有另一个事务执行了插入或删除数据,影响了读的结果
数据库的事务隔离级别:
·read-uncommitted:读未提交的。会出现脏读、不可重复读、幻读
·read-committed:读已提交的。避免了脏读,但会出现不可重复读、幻读(一般选择)
·repeatable-read:可重复读。相当于对数据加了一把锁
·serial:序列化,一个一个排队来
悲观锁:
在读取数据时,数据库对数据加锁,使其他事物不能修改该数据
方法:
session.load(Account.class, 1, LockMode.UPGRADE);
乐观锁:
给数据加一个字段, 代表他的版本字段,一旦数据被更改,则该字段自动+1。在更新数据时,会比较新的数据和旧数据的版本,若一致,则可以修改;若不一致,则代表数据被修改过。
方法:
在类中加一个版本属性,但不要指定值。并在该属性的getXXX()方法上注解
@Version
相关文章推荐
- SQL Server误区30日谈 第1天 正在运行的事务在服务器故障转移后继续执行
- 浅析SQL Server中包含事务的存储过程
- Mysql中的事务是什么如何使用
- MySql的事务使用与示例详解
- C#分布式事务的超时处理实例分析
- C#中的事务用法实例分析
- SQL Server的事务操作隔离模式介绍
- MySQL中事务概念的简洁学习教程
- C#处理Access中事务的方法
- oracle 合并查询 事务 sql函数小知识学习
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- sql不常用函数总结以及事务,增加,删除触发器
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- mysql的XA事务恢复过程详解
- 在Mysql存储过程中使用事务实例
- hibernate中的增删改查实现代码