JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片

上传人:E**** 文档编号:89678510 上传时间:2019-05-30 格式:PPT 页数:129 大小:1.91MB
返回 下载 相关 举报
JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片_第1页
第1页 / 共129页
JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片_第2页
第2页 / 共129页
JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片_第3页
第3页 / 共129页
JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片_第4页
第4页 / 共129页
JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片_第5页
第5页 / 共129页
点击查看更多>>
资源描述

《JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片》由会员分享,可在线阅读,更多相关《JavaEE开发技术与实践教程教学课件作者聂艳明ch09-Hibernate课件幻灯片(129页珍藏版)》请在金锄头文库上搜索。

1、尚辅网 http:/ Hibernate,本章小结,第一节 数据持久化与ORM,第二节 Hibernate简介,第三节 第一个Hibernate应用,第四节 实体状态及持久化操作,第五节 Hibernate实体映射,第六节 Hibernate实体关系映射,第七节 Hibernate基本数据查询,尚辅网 http:/ 将数据持久化到数据库有多种可选的技术方案: 在应用程序中直接调用数据库系统所提供的API来存取数据库中的业务数据。但这种方式对编程人员来说技术门槛有些高。 使用JDBC API来完成数据持久化操作。但是,使用JDBC完成数据持久化操作的过程中会编写很多重复的代码,直接硬编码了SQL

2、语句导致移植性不好。另外,在产生SQL语句时需要将对象的状态数据手工转换为SQL语句中相应的部分,而在处理SQL语句返回结果时又需要将记录集中的数据组装为相应对象。存在很多冗余工作量,且损失了面向对象的很多优势。 鉴于JDBC所存在的缺陷,出现了通过封装JDBC操作以简化数据库访问并实现ORM的持久框架,如Hibernate等。,第一节 数据持久化与ORM,尚辅网 http:/ (Object Relation Mapping) 面向对象应用程序和关系型数据库这两种范型间存在不匹配之处: 粒度的问题,子类型的问题,同一性的问题,与关联有关的问题,对象图导航的问题等。 ORM就是为了解决这种不匹

3、配的现象。 ORM是完成实体类结构到关系模式的映射的一种规范,又是完成数据库中关系记录和内存中实体对象之间映射的一种技术。利用ORM,可以用应用程序中既利用面向对象程序语言的现实业务直观性,又利用关系数据库管理复杂关系的优势。,第一节 数据持久化与ORM,尚辅网 http:/ 数据持久化与ORM,ORM概念:,ORM概念,尚辅网 http:/ 数据持久化与ORM,ORM的一个简单应用示例:,ORM应用示例,尚辅网 http:/ (Object Relation Mapping) ORM框架有一个明显的好处就是使得Java开发人员可以避免使用杂乱的SQL。其主要优点如下: 生产率。基于ORM框架

4、,与持久化相关的冗长的Java代码就可省略掉,使得开发人员可以集中精力在关键业务问题上,从而极大提高开发效率; 可维护性。ORM为面向对象模型和关系模型之间建立了一个缓冲,这样既允许充分利用面向对象特性表达业务领域模型,而又不至于太影响关系模型在持久层的使用; 可移植性。基于对应用程序的抽象,ORM可以支持多种SQL方言和不同数据库,ORM框架本身也独立于技术提供商,这给应用程序带来一定程度的可移植性。,第一节 数据持久化与ORM,尚辅网 http:/ Hibernate作为一种ORM框架,是对JDBC进行了非常轻量级的对象封装,简化了JDBC和SQL编码,支持便利地使用OO思想对关系型数据库

5、进行操作。Hibernate可以应用在任何使用JDBC的场合,既可以在Java客户端程序使用,也可以在基于Java的Web应用中使用。 Hibernate支持大多主流数据库,提供了完善的数据关联、事务管理、缓存管理、延迟加载机制等,现已成为Java EE持久化规范JPA的一种具体实现。 Hibernate可取代EJB的CMP完成数据持久化的重任。,第二节 Hibernate简介,尚辅网 http:/ Hibernate简介,Hibernate项目体系:,Hibernate项目体系,尚辅网 http:/ Hibernate简介,处于面向对象应用和数据库之间的Hibernate:,尚辅网 http

6、:/ Hibernate接口大致可以分为如下几类: 核心接口几乎在每个Hibernate应用中都会用到。使用这些接口,可以存取持久对象或者对事务进行控制。又可以分为: 由应用调用以完成基本的增查改删/事务和查询操作的接口, 由应用的底层代码调用的接口。 回调接口允许应用对Hibernate内部出现的事件进行处理; 类型接口允许用户增加定制的数据类型; 扩展接口对Hibernate强大的映射功能进行扩展,扩展点包括: 主键生成、SQL方言、缓存策略、JDBC连接管理、事务管理、ORM策略、属性访问策略和代理创建。,第二节 Hibernate简介,尚辅网 http:/ Hibernate简介,Hi

7、bernate接口API:,尚辅网 http:/ - Configuration接口: Configuration(配置)对象用来配置和引导Hibernate。应用使用一个配置实例来指定映射文件的位置和Hibernate的特定属性,然后创建会话工厂。Configuration的几个关键属性包括数据库的URL、用户和密码、JDBC驱动类以及方言(Dialect)等,这些属性可在hibernate.cfg.xml或hibernate.properties(为默认)中设定: 基于指定的XML配置文件得到Configuration对象: File confFile = new File(“config

8、smyhibernate.cfg.xml“); Configuration config = new Configuration().config(confFile); 基于hibernate.properties文件得到Configuration对象: Configuration config = new Configuration();,第二节 Hibernate简介,尚辅网 http:/ - SessionFactory接口: 应用从SessionFactory(会话工厂)里获得会话实例。会话工厂可以在多个应用线程间共享。典型地,整个应用只有唯一的一个会话工厂例如在应用初始化时被创建。如

9、果应用使用Hibernate访问多个数据库,则需要为每一个数据库使用一个会话工厂。 会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据,同时也保存了在一个工作单元中读入的数据并且可能在以后的工作单元中被重用的数据。SessionFactory负责创建Session实例。 通过Configuration实例来创建SessionFactory如下: SessionFactory sessionFactory = config.buildSessionFactory();,第二节 Hibernate简介,尚辅网 http:/ - Session接口: Session(会话)接

10、口是Hibernate应用使用的主要接口。 会话并不是线程安全的,应该被设计为每次只能在一个线程中使用。 通过调用Session接口可透明地完成实体对象的CRUD。 Hibernate会话是一个介于连接和事务之间的概念,可以简单地认为会话是对于一个单独的工作单元已装载对象的缓存或集合。Hibernate可以检测到这个工作单元中对象的改变。因为Hibernate会话也是与持久性有关的操作,例如存储和取出对象的接口,有时也将其称为持久性管理器。 注意Hibernate会话与Web层的HttpSession的区别。有时也将HttpSession称为用户会话。,第二节 Hibernate简介,尚辅网

11、http:/ - Session接口: 由SessionFactory创建Session实体: Session session = sessionFactory.opernSession(); 调用Session接口对象的save()方法新增实体对象如: Member member = new Member(“Zhangsan“, “123456“); session.save(member); 调用Session接口对象的get()方法检索实体对象如: Member member = session.get(Member.class, new Integer(1); 调用Session接口对

12、象的update()方法更新实体对象如: member.setUsername(“Lisi“); session.update(member); 调用Session接口对象的delete()方法删除实体对象如: Member member = session.get(Member.class, new Integer(1); session.delete(member);,第二节 Hibernate简介,尚辅网 http:/ - Query接口: Query(查询)接口允许在数据库上执行查询并控制查询如何执行。查询使用HQL或者本地数据库的SQL方言编写。查询实例用来绑定查询参数、限定查询返回

13、的结果数、并且最终执行查询。查询实例是轻量级的并且不能在创建它的会话之外使用。 由Session创建Query实例如下: String hql = “from Customer c where c.username = Zhangsan“; Query query = session.createQuery(hql); 注意:Session接口中所支持的实体CRUD操作,Query接口同样都可以支持。只是Query接口所提供的方法支持更为复杂的数据查询、批量更新和删除等实体操作。,第二节 Hibernate简介,尚辅网 http:/ - Transaction接口: Transaction(事

14、务)接口是一个可选的API,Hibernate应用可在自己的底层代码中管理事务。 事务将应用代码从下层的事务实现中抽象出来,这样有助于保持Hibernate应用的可移植性。 Hibernate支持两种事务处理机制:JDBC事务和JTA事务,缺省为JDBC事务。 通过配置文件设定Hibernate事务处理类型为JTA事务如下: net.sf.hibernate.transaction.JTATransactionFactory ,第二节 Hibernate简介,尚辅网 http:/ 当一个对象被装载、保存、更新或删除时,回调接口允许应用可以接收到相应事件通知。 Hibernate应用并不必须实现这些回调,但是在实现特定类型的功能(如创建审计记录)时却非常有用。 接口Lifecycle和Validatable允许持久对象对与其有关的生命周期事件做出响应。 引入接口Interceptor是为了允许应用处理回调而又不用强制持久类实现Hibernate特定的API。,第二节 Hibernate简介,尚辅网 http:/ Hibernate的类型对象将一个Java类型映射到数据库字段的类型。持久类所有的持久属性(包括关联)都有一个对

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号