【Hibernate】事务处理
一、概述
- 事务
事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!!
事务特性
- 原子性:事务一组操作不可分割.
- 一致性:事务的执行前后,数据完整性要保持一致.
- 隔离性:一个事务在执行的过程中不应该受到其他事务的干扰.
- 持久性:一旦事务结束,数据就永久保存数据库.
如果不考虑事务的隔离性引发一些安全性问题:
5大类问题:3类读问题 2类写问题.
读问题:
- 脏读: 一个事务读到另一个事务未提交数据.
- 不可重复读: 一个事务读到另一个事务已经提交数据(update),导致查询结果不一致.
- 虚读: 一个事务读到另一个事务已经提交的数据(insert),导致查询结果不一致
避免三种读的问题:
- 设置事务的隔离级别:
- 未提交读:以上三种读问题 都有可能发生.
- 已提交读:避免脏读,但是不可重复读和虚读有可能发生.
- 重复读:避免脏读和不可重复读,但是虚读是有可能发生.
- 串行的:可以避免以上三种读问题.
- 设置事务的隔离级别:
在Hibernate中设置事务的隔离级别:
- 在核心配置文件中:
- 4
写问题:丢失更新
- 解决
- 悲观锁:
- 乐观锁;
- 解决
线程绑定的session:
- 在Hibernate.cfg.xml中配置一个:
thread - 使用SessionFactory中的getCurrentSession();方法.
- 底层就是ThreadLocal.
- 在Hibernate.cfg.xml中配置一个:
当前线程中的session不需要进行关闭,线程结束后自动关闭!!!
【Hibernate】事务处理的更多相关文章
- hibernate 事务处理
Hibernate的事务处理:事务:* 事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!! 事务特性:* 原子性:事务一组操作不可分割.* 一致性:事务的执行前后,数据完整性要保持一致.* 隔 ...
- hibernate整合进spring后的事务处理
单独使用hibernate处理事务 本来只用hibernate开发,从而可以省了DAO层实现数据库访问和跨数据库,也可以对代码进行更好的封装,当我们web中单独使用hibernate时,我们需要单独的 ...
- Hibernate批量处理海量数据的方法
本文实例讲述了Hibernate批量处理海量数据的方法.分享给大家供大家参考,具体如下: Hibernate批量处理海量其实从性能上考虑,它是很不可取的,浪费了很大的内存.从它的机制上讲,Hibern ...
- Hibernate入门4.核心技能
Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...
- atitit.spring hibernate的事务机制 spring不能保存对象的解决
atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能..log黑头马sql语言.. sessionF ...
- hibernate 批量插入数据
如题,有两种方法 1)使用FLUSH 2)使用JDBC 分别来解释: 1)hibernate在进行数据库操作的时候,都要有事务支持的.可能你曾遇到过,没有加事务,程序会报错的情况. 而事务每次提交的时 ...
- spring配置事务
一.配置JDBC事务处理机制 <!-- 配置Hibernate事务处理 --> <bean id="transactionManager" class=" ...
- Coffee
Coffee 从接触Spring 到现在已经差不多2年多了,期间用它做过几个项目,从个人使用角度来说,Spring无疑是非常的成熟和方便的,但是知道怎么用,却不知道原理是码农和攻城师的区别,现在准备自 ...
- Java知识总结
...
- Java框架知识点总结
一.Struts1的运行原理 在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析,当用户在jsp页面发送请求被struts1的核心控制器ActionSe ...
随机推荐
- OpenStack Heat模板内部函数
Heat模板内部函数又称为Intrinsic functions. 注:Intrinsic functions只能用在 resource 的 properties 段 和 outputs 中. ...
- iOS UITextField设置placeholder颜色
设置UITextField的placeholder颜色 UIColor *color = [UIColor blackColor]; textField.attributedPlaceholder = ...
- $().attr() 和 $().css的区别
使用jquery的.attr( )方法去给div隐藏,这样写的 $("#div_id").attr("display","none"),发现 ...
- (二)UML之类图、接口、包
一.概念 类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 类图的3 ...
- python reduce和偏函数partial
functools模块 reduce方法: reduce方法 reduce方法,顾名思义就是减少 可迭代对象不能为空,初始值没提供就在可迭代对象中去一个元素 from functools import ...
- Spring Cloud(7.1):安装Kafka和Redis
Kafka安装 (1)从官方(http://kafka.apache.org/downloads)下载安装包.kafka安装包和一般安装包的命名方式不一样,我们看一个kafka包命名:kafka_2. ...
- Spring Cloud(7):事件驱动(Stream)分布式缓存(Redis)及消息队列(Kafka)
分布式缓存(Redis)及消息队列(Kafka) 设想一种情况,服务A频繁的调用服务B的数据,但是服务B的数据更新的并不频繁. 实际上,这种情况并不少见,大多数情况,用户的操作更多的是查询.如果我们缓 ...
- 【Leetcode_easy】747. Largest Number At Least Twice of Others
problem 747. Largest Number At Least Twice of Others 题意: solution1: class Solution { public: int dom ...
- 转载【oracle切换表空间】
http://blog.itpub.net/28939273/viewspace-1061476/ [root@yoon ~]# more /etc/oracle-releaseOracle Linu ...
- Spring mvc +ajax 发送邮件
1.前端页面--form表单提交,通过发送按钮的id=“send”定位DOM,触发ajax请求 <form class="form-horizontal" id=" ...