1 / 31
文档名称:

第15章 Hibernate高级应用.ppt

格式:ppt   页数:31
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第15章 Hibernate高级应用.ppt

上传人:中国课件站 2011/11/16 文件大小:0 KB

下载得到文件列表

第15章 Hibernate高级应用.ppt

文档介绍

文档介绍:第15章 Hibernate高级应用
Hibernate不仅仅是一个简单的OR Mapping工具。对于开发数据库应用程序经常遇到的一些复杂问题Hibernate也提供了很好的支持。如提高程序性能、保证数据完整性、监控对数据库的操作等等。这些都是很实用的功能归纳在本章,相对于前面的基本功能称为高级应用。
批量处理
如果想使用Hibernate将100000条记录插入到数据库的一个很自然的做法可能是这样的:
这段程序大概运行到50 000条记录左右会失败并抛出内存溢出异常(OutOfMemoryException)。这是因为Hibernate把所有新插入的人员(Person)实例在session级别的缓存区(一级缓存)进行了缓存的缘故。本节就将解答如何解决这样的问题。
及时清理session缓冲区
既让是session的缓冲区溢出,首先想到的就是如何及时清理这个缓冲区,在溢出之前请空它。
(1)设置JDBC SIZE。
(2)清理缓存。
(3)检索和更新。
使用无状态session接口
Hibernate提供了基于命令的API--StatelessSession,可以用detached object的形式把数据以流的方法加入到数据库,或从数据库输出。StatelessSession没有持久化上下文,也不提供多少高层的生命周期语义。特别是,无状态session不实现第一级cache,也不和第二级缓存,或者查询缓存交互。它不实现事务化写,也不实现脏数据检查。用StatelessSession进行的操作甚至不级联到关联实例。它忽略集合类(Collections)。通过stateless session进行的操作不触发Hibernate的事件模型和拦截器。无状态session对数据的混淆现象免疫,因为它没有第一级缓存。
使用HQL的批量语句
Hibernate3增加了使用HQL 语句批量的update 和delete 语法,语法格式如下:
update | delete from? ClassName [where where_conditions]
关于上面的语法格式有以下4点值得注意:
在from子句中,from关键字是可选的。即完全可以不写from 关键字。
在from子句中只能有一个类名,该类名不能有别名。
不能在批量HQL 语句中使用连接,显式的或隐式的都不行。但可以在where 子句中使用子查询。
整个where 子句是可选的。
事务与并发处理
事务和并发是开发数据库应用程序两个重要概念,在业务逻辑中这两个概念也是不可避免的要遇到的。对程序的效率关系特别大。Hibernate为解决这些问题,提供了很好支持。
事务简介
事务是一步或几步基本操作组成的逻辑执行单元,这些基本操作作为一个整体执行单元,它们要么全部执行,要么全部取消,绝不能仅仅执行部分。一般而言,每次用户请求,对应一个业务逻辑方法,一个业务逻辑方法往往具有逻辑上的原子性,应该使用事务。例如,一个转账操作,对应修改两个账户的余额,这两个账户的修改要么同时生效,要么同时取消——同时生效是转账成功,同时取消是转账失败;但不可只修改其中一个账户,那将破坏数据库的完整性。
使用JDBC事务
首先介绍一下JDBC中事务。在JDBC中,可以用Connection来管理事务,mit设定为false,在下达一连串的SQL语句后,mit()来送出变更,如果中间发生错误,则撤消所有的执行,
使用JTA事务
如果在EJB中使用Hibernate,或者准备用JTA来管理跨Session的长事务,那么就需要使用JTATransaction。JTA 事务管理则由JTA 容器实现,JTA 容器对当前加入事务的众多Connection 进行调度,实现其事务性要求。JTA的事务周期可横跨多个JDBC Connection生命周期。同样对于基于JTA事务的Hibernate而言,JTA事务横跨可横跨多个Session。所以不是由Session来开始事务,
数据操作的异常处理
如果Session抛出异常(包括任何SQLException),应该立即回滚数据库事务,调用 () ,丢弃该Session实例。Session的某些方法可能会导致session处于不一致的状态。所有由Hibernate抛出的异常都视为不可以恢复的。确保在 finally 代码块中调用close()方法,以关闭掉Session。
HibernateException是一个非检查期异常(),它封装了Hibernate持久

最近更新

2024年金山职业技术学院单招职业技能测试模拟.. 39页

2024年钟山职业技术学院单招职业适应性测试模.. 41页

2024年铁岭卫生职业学院单招职业适应性考试题.. 40页

2024年铜仁幼儿师范高等专科学校单招职业倾向.. 39页

2024年锡林郭勒职业学院单招职业适应性考试题.. 40页

2024年长垣烹饪职业技术学院单招职业倾向性考.. 40页

2024年长春信息技术职业学院单招职业技能测试.. 39页

2024年长春金融高等专科学校单招职业适应性测.. 42页

2024年长江师范学院单招职业适应性考试题库汇.. 40页

2024年长沙民政职业技术学院单招职业倾向性考.. 40页

2024年长沙轨道交通职业学院单招职业倾向性测.. 40页

2024年长治职业技术学院单招职业技能考试模拟.. 41页

2024年闽北职业技术学院单招职业适应性测试题.. 40页

2024年闽西职业技术学院单招职业倾向性测试模.. 41页

2024年阜阳职业技术学院单招职业适应性测试模.. 41页

2024年阳江职业技术学院单招综合素质考试题库.. 40页

2024年阳泉职业技术学院单招职业倾向性考试模.. 40页

2024年陕西国防工业职业技术学院单招职业倾向.. 40页

2024年陕西学前师范学院单招职业适应性测试模.. 40页

2024年陕西旅游烹饪职业学院单招职业倾向性测.. 40页

2024年陕西机电职业技术学院单招职业技能测试.. 41页

2024年陕西省渭南市单招职业适应性测试模拟测.. 41页

2024年陕西能源职业技术学院单招综合素质考试.. 41页

2024年陕西航空职业技术学院单招职业技能测试.. 40页

2024年陕西警官职业学院单招职业适应性考试模.. 40页

2024年青岛工程职业学院单招职业倾向性考试模.. 41页

2025年广州卫生职业技术学院单招职业技能测试.. 64页

美团代运营业务委托合同 6页

新概念青少版2A各单元重点归纳 15页

九年级家长会课件PPT下载(初三2班) 25页