资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Hibernate 核 心 API (Core API for Hibernate)杨少波njtuyanggmail.com中科院计算所职业培训中心 Hibernate 核 心 API在本讲您能了解如下知识点 (The Emphases in Teaching Materials) q持久实例的生命周期状态 qSession接口 qTransaction接口 qSessionFactory接口 qConfiguration接口 q应用中所需要的JAR类库1、Hibernate中的持久化对象的生命周期 (1)提供对象状态管理的目的 q使开发者不再需要理会底层数据库系统的细节 q使用Hibernate的开发者应该总是关注对象的状态(state) ,不必考虑SQL语句的执行 (2)Hibernate 仅仅定义了三种状态:瞬时、持久和脱管 ,对客户端代码隐藏了其内部实现的复杂性(3)三种状态相互转换的说明2、核心API介绍- Session接口(1)它是轻量级的类 p在Hibernate中,实例化的Session是一个轻量级的类,创 建和销毁它都不会占用很多资源。 p这在实际项目中确实很重要,因为在客户程序中,可能会 不断地创建以及销毁Session对象,如果Session的开销太 大,会给系统带来不良影响。(2)但它是非线程安全的 值得注意的是Session 对象是非线程安全的,因 此最好是一个线程只创建 一个Session对象(将它设 计为局部对象)。(3)Session看作介于数据连接与事务管理一种中间接口 我们可以将session想象成一个持久对象的缓冲区, Hibernate能检测到这些持久对象的改变,并及时刷新数 据库。 (4)每一个Session实例和一个数据库事务绑定 p通常将每一个Session实例和一个数据库事务绑定,也 就是说,每执行一个数据库事务(操作),都应该先创 建一个新的Session实例。 p如果事务执行中出现异常,应该撤销事务;同时不论事 务执行成功与否,最后都应该调用Session的close()方 法,从而释放Session实例占用的资源。(5)如何获得Session对象p首先创建SessionFactory对象,应用程序如果访问多个数据 源时,则应该产生多个SessionFactory;但是仅仅为了服务 于某个请求时,不要创建一个新的SessionFactory,因为创 建SessionFactory 需要耗费大量的资源。q然后根据SessionFactory再创建Session对象(6)Session的编程规则-需要随时更新和释放 注意:应该要session.close()语句放在finally语句块中。(7)Sessin 接口中针对单条记录的基本的CURD操作方法 q save()方法:把Java对象保存数据库中 q update()方法:更新数据库中的Java对象 q delete()方法:把Java对象从数据库中删除 q load()方法:从数据库中加载Java对象 q find()方法:从数据库中查询Java对象3、核心API介绍-Transaction接口 (1)Transaction接口是一个可选的API p事务将应用代码从下层的事务实现中抽象出来这可能 是一个JDBC事务,一个JTA用户事务等 p这样将允许应用通过一组一致的API控制事务边界。 (2)定义 注意:该接口有多个不同的事务的实现类(3)从本地事务切换到分布式事务的方法p因为让持久层具备可移植性是人们的理想。Hibernate 提供了一套称为Transaction的封装API, 用来把部署 环境中的本地事务管理系统转换到Hibernate事务上。 (4)为什么要提供该Transaction 接口数据库类型和个数 pTransaction接口是对实际事务实现的一个抽象。 p之所以这样设计是能让开发者能够使用一个统一事务的 操作界面,使得自己的项目可以在不同的环境和容器之 间方便地移值。(5)事务编程的基本格式(6)注意在事务编程中一定要进行事务提交(1)利用工厂类SessionFactory中取得Session的实例 (2)SessionFactory并不是轻量级的 q但要注意的是SessionFactory并不是轻量级的! q实际上它的设计者的意图是让它能在整个应用中共享。 (3)每个数据存储源对应创建一个SessionFactory(单例)4、核心API介绍- SessionFactory接口(4)SessionFactory的实现类 qSessionFactory的实现类中定义了许多集合类型的属性 q它们用于存放Hibernate配置信息、映射元数据信息等。(5)SessionFactory的缓存 q可分为两类:内置缓存和外置缓存。 qSessionFactory的内置缓存中存放了Hibernate配置信 息和映射元数据信息、同时也缓存了Hibernate自动生 成的SQL语句等;qSessionFactory的外置缓存是一个可配置的缓存插件 在默认情况下,SessionFactory不会启用这个缓存插件。 外置缓存能存放大量数据库数据的拷贝,外置缓存的物理 介质可以是内存或者硬盘。(1)作用-加载hibernate.cfg.xml并完成系统的配置 qConfiguration接口的作用是对Hibernate进行配置、并启动 Hibernate和连接数据库系统。 在Hibernate的启动过程中,Configuration类的实例首先 定位缺省XML配置文件(hibernate.cfg.xml),并读取关的配 置项目,然后创建出一个SessionFactory对象。 q根据Configuration对象创建一个SessionFactory对象5、核心API介绍-Configuration接口(2)也可以采用自定义的XML配置文件可以指定开发者自己的*.hbm.xml文件的位置,而不是使 用默认的classpath下面的hibernate.cfg.xml。但需要在代码 中指示开发者自定义的XML配置文件。然后系统在启动时会自动地查找对应的自定义的XML配置文件。(4)编程示例此时将需要通过代码添加对应的O/R Mapping映射文件。(3)如果采用hibernate.properties文件 (1)Hibernate系统核心包6、在Hibernate时所需要的各个JAR包文件将hibernate3.jar文件拷贝到程序的上下文类路径下( classpath),和我们应用程序的其他库文件放一起。(2)在应用Hibernate时还需要一些第三方的类库在运行时,Hibernate框架还需要一些第三方类库,它们 在Hibernate发行包的optional和bytecode等目录下。(3)Hibernate所需要第三方类库的Jar包文件的列表1、子曰:“学而不思则罔,思而不学则殆。” “学而时习之” 2、子曰:“知之者不如好之者,好之者不如乐之者”3、子曰:“三人行,必有我师焉”4、子曰:“我非生而知之者,好古,敏以求之者也”本讲的简要回顾5、师者:“传道、授业和解惑 ”
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号