课程提纲 口第一部分Java EE基础 口第二部分Java Web:开发 口第三部分JSF框架 口第四部分EJB 口第五部分JPA 口第六部分SSH框架 ◆第16章Hi bernate.入门 HIBERNATE Community Java EE技术 ·1。品北农林科大学信息工程学院本科生课程
课程提纲 第一部分 Java EE基础 第二部分 Java Web开发 第三部分 JSF框架 第四部分 EJB 第五部分 JPA 第六部分 SSH框架 ◆第16章 Hibernate入门 Java EE技术 •1 信息工程学院本科生课程
Java Web:技术的发展阶段 Servlet阶段/JSP阶段: 模型1:JSP+JavaBean: ·JSP:负责输入/输出、请求接收与处理及页面流程控制; 。JavaBean:主要负责业务逻辑处理。 模型2:JSP+Servlet+JavaBean: ·SP:主要负责输入/输出; 。Servlet:主要负责请求接收与处理及页面流程控制; ·JavaBean:主要负责业务逻辑处理。 冬框架阶段: 。重量级框架: 以EJB技术为核心的Java EE(USF+EJB+JPA); 轻量级框架:SD(Struts+Spring+libernate)。 Hibernate.入门 2。 西北农林升教大学信息工程学院本科生课程
Java Web技术的发展阶段 ❖ Servlet阶段 / JSP阶段: ❖ 模型1:JSP + JavaBean: • JSP: 负责输入/输出、请求接收与处理及页面流程控制; • JavaBean: 主要负责业务逻辑处理。 ❖ 模型2:JSP + Servlet + JavaBean: • JSP: 主要负责输入/输出; • Servlet: 主要负责请求接收与处理及页面流程控制; • JavaBean: 主要负责业务逻辑处理。 ❖ 框架阶段: • 重量级框架:以EJB技术为核心的Java EE (JSF+EJB+JPA); • 轻量级框架:SSH (Struts + Spring + Hibernate)。 Hibernate入门 •2 信息工程学院本科生课程
Hibernate及其体系结构 Hibernate是JBoss:社 区一开源ORM框架,对 Application JDBC进行了轻量级的 对象封装,简化了 JDBC和SQL编码,支持 Persistent Objects 便利地使用00思想对 RDB进行操作。 Hibernate 冬Hibernate框架可应用 hibernate. 于任何使用UDBC的场 properties XML Mapping 合,完成数据持久化。 Hibernate是JPA的一 个实现。 Database Hibernate入门 ·3。西北农林科大学信息工程学院本科生课程
❖ Hibernate是JBoss社 区一开源ORM框架,对 JDBC进行了轻量级的 对象封装,简化了 JDBC和SQL编码,支持 便利地使用OO思想对 RDB进行操作。 ❖ Hibernate框架可应用 于任何使用JDBC的场 合,完成数据持久化。 ❖ Hibernate是JPA的一 个实现。 •3 信息工程学院本科生课程 Hibernate及其体系结构 Hibernate入门
Hibernate及其组成(来自其主页) Historically,Hibernate facilitated the storage and retrieval of Java domain objeots sia.bject Relational Mapping (ORM) Tools Java EE 5.o IPA Provider Today Hibernate is a collectiodprojects onabling developers to utilize POJO style domain models Core Core in their applications in ways extending wellbeyond Object/Relational Mapping Annotations XML Metadata Search J2SE 1.4 .NET 1.1 J2EE 1.4 Validator Shards .NET 2.0 Envers Hibernate.入门 4。 品北农林升教大学信息工程学院本科生课程
❖ Historically, Hibernate facilitated the storage and retrieval of Java domain objects via Object/Relational Mapping (ORM). ❖ Today, Hibernate is a collection of related projects enabling developers to utilize POJO-style domain models in their applications in ways extending well beyond Object/Relational Mapping (ORM). •4 信息工程学院本科生课程 Hibernate及其组成(来自其主页) Hibernate入门
Hibernate框架的常用API Configuration类:读取Hibernatei配置-config0, 并获得Sess ionFactory.对象-buildSessionFactory0; SessionFactory:获得Sess ion对象-openSess ion0; Session接口:Java应用和Hibernate:之间的一个主 要的运行期接口,是提供持久化服务的核心API: ●save(Object obj):保存操作,生成inserti语句; ●update(Object obj)):修改操作,生成update语句; ●delete(Object obj)):删除操作,生成delete语句; ●get(Class cls,Serializable id):基于id的查找操作, 生成select语句。 Query接口:执行HQL查询; Transaction接口:负责事务处理。 Hibernate入门 5。 西北农林科教大学信息工程学院本科生课程
❖ Configuration类:读取Hibernate配置- config(), 并获得SessionFactory对象–buildSessionFactory(); ❖ SessionFactory:获得Session对象-openSession(); ❖ Session接口:Java应用和Hibernate之间的一个主 要的运行期接口,是提供持久化服务的核心API: ⚫ save(Object obj):保存操作,生成insert语句; ⚫ update(Object obj):修改操作,生成update语句; ⚫ delete(Object obj):删除操作,生成delete语句; ⚫ get(Class cls, Serializable id):基于id的查找操作, 生成select语句。 ❖ Query接口:执行HQL查询; ❖ Transaction接口:负责事务处理。 Hibernate框架的常用API Hibernate入门 •5 信息工程学院本科生课程
持久化类 实现业务实体的类,亦即持久化类(Persistent Class)。P0J0模式的持久化类的规范如下: 。必须提供oub I ich的无参构造方法; 。必须提供一个标识属性(Identifier Property); ·类的属性都是pr ivate权限; ·为属性提供getXXX和setXXX方法。 ·持久化类的实例即为持久化对象。 Hibernate.入门 6。 西北农林升技大学信息工程学院本科生课程
❖ 实现业务实体的类,亦即持久化类 (Persistent Class)。POJO模式的持久化类的规范如下: • 必须提供public的无参构造方法; • 必须提供一个标识属性 (Identifier Property); • 类的属性都是private权限; • 为属性提供getXXX和setXXX方法。 ❖ 持久化类的实例即为持久化对象。 持久化类 Hibernate入门 •6 信息工程学院本科生课程
持久化对象的状态 ”持影 new Transient 。月 Garbage n对 (回收) save() 库中。 I get() Delete() saveOrUpdate() load() ● 扌incg er() on对 etc. Persistent 标识, evict() update() on对 close()* saveOrUpdate() clear()* 效, lock() 1 Garbage寸象 (回收, 改将 Detached Hibernate入门 7。 西北农林科教大学信息工程学院本科生课程
❖ 持久化对象有三种状态: • 瞬时状态 (transient state):对象还未与Session对 象关联,还没有持久化标识,也不能持久化到数据库中。 与普通对象没有区别; • 持久状态 (persistent state):对象与某个Session对 象关联(如被加载、保存、更新等),拥有持久化标识, 与数据库中一条记录对应; • 脱管状态 (detached state):当与之关联的Session对 象关闭后,该对象即处于脱管状态,其引用继续有效, 但不再与数据库中记录对象。当再次与某Session对象 关联后又转变为持久状态对象,托管期间所做的修改将 会被持久化到数据库中。 持久化对象的状态 Hibernate入门 •7 信息工程学院本科生课程
ORM示例 客户实体 Customerz类 -id int -name String -age:int 表th_customer id name age 1 张三 21 Customer>对象 2 李四 20 id =3 3 王五 22 -name =王五 age =22 Hibernate.入门 ·8。西北农林彩教大学信息工程学院本科生课程
ORM示例 •8 信息工程学院本科生课程 id name age 1 张三 21 2 李四 20 3 王五 22 Customer类 - id : int - name : String - age : int Customer对象 - id = 3 - name = 王五 - age = 22 表 th_customer 客户实体 Hibernate入门
ORM种类 ”关联关系映射 Product 。一对一:人员与护照; 。一对多与多对一:人员(1)与地址(n): 多对多:学生与教师。 Book Book 冬继承关系映射(只需一个与父类同名的hbm.xml): ·TPS(Table Per Subclass):父类-主表,子类-子表。每个 类对应一张表。用joined-subclass来配置子类; 。TPH(Table Per class Hierarchy):只设计一张表,采用 标识字段区分不同子类对象。用subclass:和di scr iminator--value 来配置子类; ·TPC(Table per Concrete class):为每个子类设计一张表。 用un ion-subcl ass来配置子类。 Hibernate入门 9。 西北农林升教大学信息工程学院本科生课程
❖ 关联关系映射 • 一对一:人员与护照; • 一对多与多对一:人员(1)与地址(n); • 多对多:学生与教师。 ❖ 继承关系映射(只需一个与父类同名的hbm.xml): • TPS (Table Per Subclass):父类-主表,子类-子表。每个 类对应一张表。用joined-subclass来配置子类; • TPH (Table Per class Hierarchy):只设计一张表,采用 标识字段区分不同子类对象。用subclass和discriminator-value 来配置子类; • TPC (Table per Concrete class):为每个子类设计一张表。 用union-subclass来配置子类。 ORM种类 Hibernate入门 •9 信息工程学院本科生课程 Product Book Book
HQL语言 Hibernate框架提供了HQL(Hibernate Query Language) 语言,完成复杂的数据库操作。HQL和SQL在语法 上很类似,主要区别有如下几点: 。HQL语言中出现的是类名、属性名。SQL语言中出现的是 表名、字段名; ·HQL语言严格区分大小写。SQL语言不区分大小写; ·HQL语言理解继承、多态等面向对象的概念。而SQL不能。 冬通过Session对象的createQuery (方法获得Query 对象来执行基于HQL的CRUD语句。与JPQL的类似。 如:select cust.custname from Customer as cust where age>? Hibernate.入门 ·10。西北农林彩枝大学信息工程学院本科生课程
❖ Hibernate框架提供了HQL(Hibernate Query Language) 语言,完成复杂的数据库操作。HQL和SQL在语法 上很类似,主要区别有如下几点: • HQL语言中出现的是类名、属性名。SQL语言中出现的是 表名、字段名; • HQL语言严格区分大小写。SQL语言不区分大小写; • HQL语言理解继承、多态等面向对象的概念。而SQL不能。 ❖ 通过Session对象的createQuery()方法获得Query 对象来执行基于HQL的CRUD语句。与JPQL的类似。 ❖ 如:select cust.custname from Customer as cust where age > ? HQL语言 Hibernate入门 •10 信息工程学院本科生课程