- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hibernate高级应用.ppt
Hibernate高级应用 主讲人:杨云振 Hibernate事务和并发处理 Hibernate缓存策略 批量处理 延迟加载 课程内容 什么是事务? 单个逻辑工作单元,它包含一系列的操作。 事务的特性(ACID) 原子性 一致性 隔离性 持久性 事务 1.脏读取(Dirty Reads) 一个事务读取了另一个事务未提交的数据 2.不可重复读(Non-repeatable Reads) 一个事务再次读取之前曾读过的数据时,发现该数据已经被另一个提交的事务修改 3.虚读(幻读) 一个事务重新执行一个查询,返回一套符合条件的记录,但这些记录中包含了因为其他最近提交的事务而产生的新记录 数据操作过程引发的问题? 1.脏读取(Dirty Reads) 时间 取款事务 支票事务 T1 开始事务 T2 开始事务 T3 查询帐户余额1000元 T4 取出100元,把存款余额改成900元 T5 查询帐户余额900(脏读) T6 回滚事务,余额变为1000元 T7 汇入100元,把余额更改为1000元 T8 提交事务 2.不可重复读 时间 取款事务 支票事务 T1 开始事务 T2 开始事务 T3 查询帐户余额1000元 T4 查询帐户余额1000元 T5 存入100元,把存款余额改成1100元 T6 存入100元,把存款余额改成1100元 T7 提交事务 T8 提交事务 虚读(幻读) 时间 注册事务 统计事务 T1 开始事务 T2 开始事务 T3 查询注册人数为100人 T4 新注册一个用户 T5 提交事务 T6 再次查询,注册人数为101人 T7 弄不清楚到底是100人还是101人 数据库事务管理隔离级别 什么是事务的隔离级别? 数据库通过某种机制,在多个并行的事务之间进行隔离,使每个事务在执行过程中保存独立. 隔离等级 脏读取 不可重复读 虚读 Read Uncommitted 可能 可能 可能 Read Committed 不可能 可能 可能 Repeatable Read 不可能 不可能 可能 Serializable 不可能 不可能 不可能 从上到下严密程度递增,性能递减 Hibernate是JDBC轻量级的封装,本身不具备事务的管理能力,在事务管理层委托给底层的JDBC或JTA进行事务的管理和调度。 1. 基于JDBC的事务管理 Hibernate事务管理 JDBC的事务是有Connection管理的,事务的周期依赖于Connection的生命周期。而Session依托于Connection实现的,事务局限与session的生命周期。 提供了跨越session的事务管理能力。 基于JTA的事务管理。 Hibernate隔离级别的设置 在hibernate的配置文中配置隔离级别 session-factory property name=“hibernate.connection.isolation”4/property /session-factory 隔离级别与它们的代表数字如下 隔离级别 代表数字 Read uncommitted 1 Read committed 2 Repeatable read 4 Serializable 8 悲观锁(perssimistic locking) 在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现往往依靠数据库提供的锁机制。 乐观锁(optimistic locking) 乐观锁并没有对任何操作加锁,它只是在事务更新记录时,对事务进行检查,看从上一次读取这条记录后,它是否被其他事务修改. Hibernate中锁机制 悲观锁是解决事务并发的一种方法,悲观锁是在更新数据时把记录锁住,防止其他事务读写这个记录. Hibernate的加锁模式有 LockMode.NONE(无锁机制) LockMode. WRITE:当向数据库中插入或更新数据时,Hibernate会自动使用这种锁。 LockMode.READ:Hibernate在读取记录时自动获取 注:以上三种机制为Hibernate 内部对数据的锁定机制,与数据库无关。 LockMode.UPGRADE:利用数据库的for update子句加锁 LockMode.UPGRADE_NOWAIT:Oralce的特定实现,利用oracle的for update nowait子句加锁 悲观锁机制 Hibernate提供了三种方法来检查数据是否发生了变化。 1.使用version实现乐观锁 2.使用时间戳实现乐观锁 3.对比字段值实现乐观锁 其中已使用version的方法最为常用。 步骤: 1.首先为映射文件(xx.hbm.xml)中的class节点添加 optimistic-l
您可能关注的文档
- DSP教案开发工具讲课用.ppt
- DSP数字信号处理经典.ppt
- dsp第十讲.ppt
- dsp第四讲.ppt
- DSP综合实验箱.ppt
- DSS+决策支持系统+课件.ppt
- DSS的基本概念.ppt
- DSS的构造与系统结构.ppt
- DStudio与其它动画软件.ppt
- ds_MAX灯光.ppt
- 2024-2025学年人教版小学数学四年级下册教学计划及进度表.docx
- 2024-2025学年北师大版小学数学二年级下册教学计划及进度表.docx
- 2024-2025学年人教版小学数学五年级下册教学计划及进度表.docx
- 2024-2025学年人教大同版(2024)小学英语三年级下册教学计划.docx
- 2024-2025学年人教精通版(三起)(2024)小学英语三年级下册教学计划.docx
- 2024-2025学年统编版初中道德与法治八年级下册教学计划及进度表.docx
- 2024-2025学年统编版(2024)初中道德与法治七年级下册教学计划及进度表.docx
- 2023-2024学年上海黄埔区中考二模综合测试(物理部分)试卷及答案.pdf
- 2024-2025学年外研版(三起)(2024)小学英语三年级下册教学计划及进度表.docx
- 2025届北京市北京第四中学高三冲刺模拟数学试卷含解析.doc
文档评论(0)