java数据库技术PPT电子课件教案-第9章 HIBERNATE API简介.ppt_第1页
java数据库技术PPT电子课件教案-第9章 HIBERNATE API简介.ppt_第2页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章 hibernate api简介 hibernate中有几个常用的概念:sessionfactory、 session与trasaction。注意这里的session不同于servlet 中的httpsession,二者虽然都可理解为会话,但使用的过 程是不一样的。这一章将对hibernate api做一个简单归类 总结。 9.1 configuration类 configuration类负责管理hibernate的配置信息,一 个configuration类的实例代表了有用程序中java类导数据 库的映射的集合。应用程序通常只是创建一个 configuration实例,并通过它创建sessionfactory实例, 例如下面的代码: 9.1 configuration类 sessionfactory sessionfactory = new configuration().configure().buildsessionfactory(); configuration是hibernate的入口,在新建一个 configuration的实例时,hibernate会在类路径中查找 perties文件和hibernate.cfg.xml文件,如果 这两个文件都存在,则hibernate.cfg.xml文件将会覆盖 perties文件;如果两个文件都不存在,则抛 出异常。 9.1 configuration类 configuration提供了带参数的访问方法,用户可以指 定配置文件的路径,而不用系统默认的hibernate.cfg.xml 文件,示例代码如下: 9.1 configuration类 string filename = “use_hibernate_cfg.xml”; configuration configuration = new configuration().configure(filename); 9.2 sessionfactory接口 sessionfactory (org.hibernate.sessionfactory)是 一个线程安全的session工厂类,能为不同的线程生成不同 的session。sessionfactory维护着session相关的资源, 包括数据库连接池等、缓存数据等。 9.2.1 sessionfactory接口简介 sessionfactory接口是hibernate的核心接口之一, sessionfactroy接口负责初始化hibernate,在初始化 hibernate的时候会创建一个configuration类的实例,该实 例加载hibernate的配置文件,并将已经写好的映射文件交 给它处理,它充当数据存储源的代理,并负责创建session 对象。 9.2.1 sessionfactory接口简介 sessionfactory接口用到了工厂模式。需要注意的 是:一般情况下,一个项目通常只需要一个 sessionfactory就够,当需要操作多个数据库时,需要 为每个数据库指定一个sessionfactory。 9.2.2 sessionfactory接口的使用 当使用sessionfactory创建成功以后, configuration类的实例就没有用了,可以把configuration 类的实例抛弃掉,代码如下: configuration configuration = new configuration().configure(); sessionfactory sessionfactory = configuration.buildsessionfactory(); sessionfactory一旦声明,就不必去估计数据库连接 的问题,这样对开发者来说很方便。 9.3 seesion接口 session是hibernate运作的核心,对象的生命周期、 事务的管理以及数据库的存取都和它有密切相关,有效的管 理session是使用hibernate的重点。 9.3.1 session接口简介 在各种session 管理方案中, threadlocal 模式得到 了大量使用。threadlocal 是java中一种较为特殊的线程 绑定机制。通过threadlocal存取的数据,总是与当前线程 相关,也就是说,jvm 为每个运行的线程,绑定了私有的 本地实例存取空间,从而为多线程环境常出现的并发访问问 题提供了一种隔离机制。 9.3.2 session接口的使用 session是sessionfactory创建的。由于 sessionfactory是线性安全的,可以让多个线程同时存取 sessionfactory而不会引起数据共享的问题。session是 非线性安全的,让多个线程共享一个session,会引起线程 冲突或者线程混乱。 9.3.2 session接口的使用 使用threadlocal变量,可以解决session的管理问 题。使用threadlocal可以有效地隔离线程执行所使用的 数据,这样可以解决多个线程共享数据的问题,在 hibernate中使用hibernatesessionfactory来管理 session。 9.4 trasaction接口 transaction代表一次事务,事务内包含若干的数据修 改,事务提交后才生效。如果事务失败或者回滚,所有的修 改都会失效。hibernate的事务不同于数据库的事务。 hibernate可能使用各种机制保证事务性,包括jta(java transaction api,java事务接口)、第三方事务管理、数 据库事务等。 9.4.1 trasaction接口简介 transaction接口是org.hibernate.transaction接口,它 是封装底层事物的接口,底层的事务包括jdbc api、jta和 corba(common object request broker architecture) api。 9.4.2 trasaction接口的使用 在使用hibernate操作数据库时,通过trasaction来开 启事务,提交事务和关闭事务。如果事务部开启,则无法操 作数据库数据。trasaction的用法如下: public void modifyusers(object object) / 修改数 据的方法 session session = hibernatesessionfactory.getsession(); 9.4.2 trasaction接口的使用 try session.begintransaction();/ 开启事务 session.update(object); / 修改数据 9.4.2 trasaction接口的使用 session.gettransaction().commit();/ 提交事务 catch (exception e) session.gettransaction().rollback();/ 回滚事务 finally 9.4.2 trasaction接口的使用 session.close();/ 关闭session 9.5 hibernate配置参数介绍 在第8章中的两个例子中都使用了hibernate的配置, 这一节重点对hibernate的配置参数做介绍。hibernate是个 很有弹性的框架,能支持各种数据库、各种情景下的数据库 操作,因此hibernate有很大的配置参数。一般情况下, hibernate默认的配置能够胜任绝大多数的工作。如果不满 足,只需在hibernate配置文件中覆盖默认的参数即可。 9.5.1 配置文件参数 hibernate配置文件可以为xml文件或者properties文 件。默认的配置文件名称为hibernate.cfg.xml与 perties,位于classpath下面。 参数即可以配置在cfg.xml文件中,也可以配置在 properties文件中。在properties文件中时,参数是具有 hibernate前缀的,而cfg.xml文件中没有。 9.5.2 加载实体类映射文件的其他方法 除了在配置及文件中加载实体类的映射文件以外, hibernate可以在程序中动态的加载实体类配置,示例代码 如下。 configuration configuration = new configuration(); configuration.addresource(“com/cn/vo/usersvo.h bm.xml “); 9.5.2 加载实体类映射文件的其他方法 configuration.addresource(“com/java/vo/dept.hb m.xml “); hibernate也可以用addclass()直接加载实体类。一般 情况下,加载实体类是更好的方法。 9.5.3 通过configuration获取sessionfactory 可以通过configuration获取sessionfactory,例 如: configuration configuration = new configuration(); sessionfactory sessionfactory = configuration.buildsessionfactory(); 9.5.3 通过configuration获取sessionfactory 一个sessionfactory维护一个数据库。如果有多个 数据库,可以创建多个sessionfactory。hibernate允许程 序使用多个sessionfactory同时操作多个数据库。 9.5.4 数据库连接 hibernate封装了jdbc操作,获取数据库连接等价于 开启一个session。操作完毕需要关闭session,以关闭数 据库连接。 开启或者关闭一个session时,或者关闭一个session 时,最好使用try.catch结构。这样如果开启或者关闭出现 异常,则对异常进行处理。 9.5.4 数据库连接 hibernate内置一个连接池,所有的数据库连接都是从 连接池中获取的。sessionfacctory加载的时候会初始化连 接池。与连接池相关的参数如下。 9.5.4 数据库连接 hibernate.connection.driver_class:数据库驱动 类,参数值是具体数据库的驱动。 hibernate.connection.url:数据库连接url hibernate.connection.username :用户名 hibernate.connection.password: 密码 9.5.4 数据库连接 hibernate.connection.pool_size: 用来设置连接池大小 (最大连接数)。 hibernate.connection.datasource: jndi数据源名称。 hibernate.jndi.url:jndi数据源的提供者(可选)。 hibernate.jndi.class :jndi数据源的实现类(可选)。 hibernate.connection.username: 用户名。 hibernate.connection.password: 密码。 9.5.5 hibernate配置中的可选参数 hibernate有许多可选的配置参数,能影响到 hibernate的运行。这些参数都有自己的默认值。注意,有 些“系统级”的参数一旦sessionfactory加载后就不能修改 的,只能在sessionfactory加载前设置。例如,配置在 perties中。常用的hibernate可选配置参数 如下。 9.5.5 hibernate配置中的可选参数 hibernate.dialect sql方言类。各数据库间的sql语 句有轻微的区别,该参数设置使用哪种sql方言。各数据库 的sql方言见后面的小节。 例如:org.hibernate.dialect.mysqldialect。 9.5.5 hibernate配置中的可选参数 hibernate.show_sql 是否在控制台显示sql语句。 只显示dml与查询语句,不显示ddl。 例如:true,false。 9.5.5 hibernate配置中的可选参数 hibernate.format_sql是否格式化sql语句。 例如:true,false。 hibernate.use_sql_comments是否显示sql注释。 sql注释将使sql语句更容易读。 例如:true,false。 9.5.5 hibernate配置中的可选参数 hibernate.default_schema默认的数据库schema。 hibernate.default_catalog 默认的数据库catalog。 9.5.5 hibernate配置中的可选参数 hibernate.session_factory_name sessionfactory 启动后将把数据源绑定到以该属性值命名的jndi资源上。 例如:jndi/composite/name 9.5.5 hibernate配置中的可选参数 hibernate.max_fetch_depth 使用外连接(out join) 获取节点属性(多对一与一对一属性)的最大获取深度。0 表示不使用外连接。 推荐:03 9.5.5 hibernate配置中的可选参数 hibernate.default_batch_fetch_size 集合属性内记 录可能很多,hibernate采用分批加载的方式。设置一次加 载的记录数。 推荐:4,6,8 9.5.5 hibernate配置中的可选参数 hibernate.default_entity_mode 设置session返回的 数据的显示模式。hibernate能将数据库数据自动封装为 map、dom4j与pojo,其中pojo是最常用的。 例如:dynamic-map, dom4j, pojo 9.5.5 hibernate配置中的可选参数 hibernate.order_updates 更新数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论