hibernate之事务处理

四个方面:事务的性质,事物的隔离级别,hibernate配置事务的隔离级别,使用事务小案例

1. 事务的性质:

四种性质:原子性,一致性,隔离性,持久性。

原子性:原子,不可再分。一个操作不能分为更小的操作。要不全部执行,要不全不执行。

一致性:事务在完成时,必须使得所有的数据保持一致的状态。(ps:数据状态重点,与开始事务前一样的状态)

隔离性(并发才考虑):事务查看数据时数据所处在的状态,要么是另一个并发事务修改它之前的状态,要么是另一个并发事务修改它之后的状态,事务不会查看中间状态的数据

持久性:事务操作完成之后,它对于系统的影响是永久性的(执行了就执行了,没有撤回)(破坏数据也会执行)

2. 事物的隔离级别:

隔离级别分为三种:脏读,不可重复读,幻读。

脏读:读取了未提交事务中的数据

不可重复读:对于数据库中某个数据一个事务范围内多次读取同一数据(并发情况下,两次分别读取并发事务前与后的值)却有不同的值。

幻读:事务发生中期被另一个事务夺去cpu资源,改变了数据。

3. hibernate配置事务的隔离级别

四种属性

1(0001).读未提交:最低的隔离界别,最没用,最快。

2(0010).读已提交:可避免脏读,不可避免不可重复读。

4(0100).可重复读:可以避免不可重复读,可以避免脏读(mysql默认)。

8(1000).串行化:最强大,三种都可以避免(速度最慢)

hibernate主配置文件hibernate.cfg.xml配置

<property name="hinernate.connection.isolation">4</property>

配置事务(session与当前线程绑定)---自动帮你创建一个session对象(在Service中可以开启事务。)整个线程用同一个session

<property name = "hinernate.connection.isolation">

4. 使用事务小案例

点击按钮,根据id查找user--->找到user的名字改变,找不到则不做任何改变退出。

原文地址:https://www.cnblogs.com/ZTYCandy/p/10593376.html

时间: 2024-11-13 06:41:35

hibernate之事务处理的相关文章

分析Hibernate的事务处理机制

Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的 Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transaction的封装,下面我们详细的分析: Hibernate可以配置为JDBCTransaction或者是JTATransaction,这取决于你在hibernate.properties中的配置: #hibernate.transaction.factory_cl

Hibernate的事务处理

事务:事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!! 事务特性 原子性:事务一组操作不可分割. 一致性:事务的执行前后,数据完整性要保持一致. 隔离性:一个事务在执行的过程中不应该受到其他事务的干扰. 持久性:一旦事务结束,数据就永久保存数据库. 如果不考虑事务的隔离性引发一些安全性问题: 5大类问题:3类读问题 2类写问题. 读问题: 脏读 :一个事务读到另一个事务未提交数据. 不可重复读 :一个事务读到另一个事务已经提交数据(update),导致查询结果不一致. 虚读 :一个事务

【Hibernate】事务处理

一.概述 一.概述 事务 事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!! 事务特性 原子性:事务一组操作不可分割. 一致性:事务的执行前后,数据完整性要保持一致. 隔离性:一个事务在执行的过程中不应该受到其他事务的干扰. 持久性:一旦事务结束,数据就永久保存数据库. 如果不考虑事务的隔离性引发一些安全性问题: 5大类问题:3类读问题 2类写问题. 读问题: 脏读: 一个事务读到另一个事务未提交数据. 不可重复读: 一个事务读到另一个事务已经提交数据(update),导致查询结果不一致

为什么hibernate需要事务?

Hibernate是对JDBC的轻量级对象封装, Hibernate本身是不具备事务处理功能的,Hibernate事务实际上是底层的JDBC事务的封装,或者是JTA事务的封装. Hibernate的JDBCTransaction根本就是conn.commit而已,根本毫无神秘可言,只不过在Hibernate中, Session打开的时候,就会自动conn.setAutoCommit(false),不像一般的JDBC,默认都是true,所以你最后不写 commit也没有关系,由于Hibernate

Struts+spring+Hibernate 制作一个简单的登录验证

index.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

Hibernate 3 深度解析--苏春波

Hibernate 3 深度解析 Hibernate 作为 Java ORM 模式的优秀开源实现, 当下已经成为一种标准,为饱受 JDBC 折磨的 Java 开发者带来了“福音.快速的版本更新,想开发者所想,Hibernate 的开发团队俨然就是我们开发者的知音呀.随着 Hibernate 的用户群的越来越壮大,Hibernate 的功能也变得更加强大和健硕起来,下面就对于我们比较常用和关心的一些内容做一些比较深入的探讨,我们的宗旨就是不但会灵活应用,还能知其所以然,不要求大家一定要把 Hibe

hibernate批量更新和删除数据

批量处理  不建议用Hibernate,它的insert效率实在不搞,不过最新版本的Hibernate似乎已经在批量处理的时候做过优化了,设置一些参数如batch_size,不过性能我没有测试过,听说是这样.我记得以前在做大批量数据转移的时候我们测试过Hibernate,很慢,直接Pass,当时我们的系统由于用多个数据库,所以用的jdbc,如果不考虑移植还是可以用存储过程的. 存储过程对数据库依赖过强,不便系统移植   浅析Hibernate下数据批量处理方法 关键字: hibernate指处理

Hibernate的理论知识点

转自网络 一. 对象持久化的理论 1.对象持久化:内存中的对象转存到外部持久设备上,在需要的时候还可以恢复. 2.对象持久化的原因(目标): 物理: 1) 内存不能持久,需要在硬盘上持久保存 //(物理上,物理的都不是根本原因) 2) 内存容量有限,需要在容量更大的硬盘上保存 应用: 3) 共享(Internet的本质:信息的收集.整理.发布) //最重要的原因 4) 检索(大规模) //也很重要 5) 管理(备份.安全) 3.怎样进行对象持久化?(仅从JAVA方面讲) 物理: 1) 对象序列化

Hibernate下的增删改查

概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? 1:hiberanter学习的难度要比mybatis要大,复杂度要高 2:hibernate不需要写sql语句,自动生成,而mybatis需要写sql语句进行数据操作 3:hibernate支持分页(API),而mybatis不支持分页(那是属于插件) 4:hibernate支持事务处理,而myba