JavaEE主流开源框架第二部分Hibernate.ppt

上传人:小飞机 文档编号:6509303 上传时间:2023-11-07 格式:PPT 页数:55 大小:753KB
返回 下载 相关 举报
JavaEE主流开源框架第二部分Hibernate.ppt_第1页
第1页 / 共55页
JavaEE主流开源框架第二部分Hibernate.ppt_第2页
第2页 / 共55页
JavaEE主流开源框架第二部分Hibernate.ppt_第3页
第3页 / 共55页
JavaEE主流开源框架第二部分Hibernate.ppt_第4页
第4页 / 共55页
JavaEE主流开源框架第二部分Hibernate.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《JavaEE主流开源框架第二部分Hibernate.ppt》由会员分享,可在线阅读,更多相关《JavaEE主流开源框架第二部分Hibernate.ppt(55页珍藏版)》请在三一办公上搜索。

1、主流开源框架,第二部分:Hibernate框架,Hibernate框架基础知识HQL语言粒度设计关联关系映射继承关系映射性能提升整合Hibernate与Struts2,章节目录,章节目录,Hibernate概述核心API第一个Hibernate应用,Hibernate概述,Hibernate是一个ORM框架Hibernate框架主要作用是简化应用的数据持久层编程掌握Hibernate框架需要掌握以下三个方面持久化对象(Persistent Object)Hibernate属性文件(hibernate.properties)Hibernate映射文件(XML Mapping),Hibernate

2、框架常用API,Configuration类:读取Hibernate属性文件SessionFactory接口:获得Session对象Session接口:Java应用和Hibernate之间的一个主要的运行期接口,是提供持久化服务的核心APIsaveupdatedeleteget,Hibernate简单Demo基本步骤,配置DataBase Driver逆向工程生成PO类以及hbm.xml文件修改文件,添加必要属性编写测试代码,对数据库表记录进行增删改查操作,章节目录,持久化类对象状态Hibernate属性配置ORM映射基础HQL语言,持久化类,实现业务实体的类,被称为持久化类(Persiste

3、nt Class)必须提供public的无参构造方法必须提供一个标识属性(Identifier Property)类的属性都是private权限为属性提供getXXX和setXXX方法,对象状态,持久化类的对象有三种状态瞬时状态(transient state)持久状态(persistent state)脱管状态(detached state),Hibernate属性配置,Hibernate框架使用连接池维护数据库连接Hibernate发布包包含了C3P0和Proxool连接池文件的基本结构如下,HQL语言,Hibernate框架提供了HQL(Hibernate Query Language)

4、语言,完成复杂的数据库操作HQL语言和SQL语言在语法上很类似,主要区别有如下几点HQL语言中出现的是类名、属性名;SQL语言中出现的是表名、字段名;HQL语言严格区分大小写;SQL语言不区分大小写;HQL语言理解继承、多态等面向对象的概念,章节目录,from子句select子句where子句聚集函数order by子句group by子句子查询,from子句,使用from子句实现最简单查询,from后是类的名字注意:HQL中不存在select*from这样的语句,如果是查询对象所有属性,则直接使用from子句即可可以用as为类取别名,在其他地方使用from Customer as cust,

5、select子句,使用select子句可以选择性地查询对象的某个属性select cust.custname from Customer as cust只返回一个属性时,查询结果被封装到相应类型的集合对象中使用select子句还可以选择性地查询对象的多个属性select cust.custname,cust.pwd from Customer as cust返回多个属性时,查询结果被封装到List中当select子句后返回的属性都是某个持久类的属性时,可以使用类的构造方法,返回持久类的对象select new Customer(cust.custname,cust.pwd)from Custo

6、mer as cust,聚集函数,HQL中提供了作用于属性的聚集函数avg:属性的平均值min:最小值max:最大值sum:求值的总和count:求行数,where子句,HQL中提供了where子句,where子句中的表达式也与SQL基本相同where子句中可以使用?来设置参数,通过Query接口中的setXxx方法对参数赋值,order by子句,使用order by子句根据返回对象的任何一个属性进行排序,group by子句,使用group by子句根据返回对象的属性进行分组,子查询,HQL可以进行子查询。子查询必须被()包含起来,章节目录,基于设计的粒度基于性能的粒度,基于设计的粒度设计

7、,如果表中的某些字段联合起来能表示类的某个属性,那么可以进行基于设计的粒度设计将表跟多个类映射类和类之间使用关联关系在映射文件中,使用component元素进行映射,基于性能的粒度设计,如果表中的某些字段不经常使用,而且占有空间较大,则可以使用基于性能的粒度设计一个表可以映射为多个类每个类对应一个hbm.xml文件根据实际情况,使用不同的类,章节目录,一对多、多对一一对一多对多连接查询,关联的方向与数量,关联的方向可分为单向关联和双向关联除了需要考虑关联的方向问题,还需要考虑关联双方的数量问题一对一(One to One)一对多(One to Many)多对一(Many to One)多对多(

8、Many to Many),一对多、多对一,双向的一对多/多对一关系是现实中最为常见的关联关系,基于主外键的一对多/多对一关联,基于主外键的一对多关系主表的hbm.xml中,使用从表的hbm.xml中,使用,基于连接表的一对多/多对一关联,基于连接表的一对多关系主表的hbm.xml中,使用标签的table属性,指定连接表,使用映射从表的hbm.xml中,使用标签,指定连接表,使用映射,一对一关联,一对一关联是另外一种常见关系,基于主键的一对一关联,当从表中的外键即是主键时,称为基于主键的一对一关联主表的hbm.xml中使用配置从表的hbm.xml中也使用配置,同时使用,指定其主键与外键相同,基

9、于唯一外键的一对一关联,当从表中的外键拥有unique约束时,称为基于唯一外键的一对一关联主表的hbm.xml中使用配置从表的hbm.xml中使用配置,并指定unique属性为true,多对多关联,多对多关联是另外一种常见关联关系,关联映射的配置,one-to-one:一对一one-to-many:一对多many-to-one:多对一many-to-many:多对多集合映射:一对多及多对多时使用集合映射,连接查询,HQL中的连接查询分为隐式(implicit)和显式(explicit)两种隐式连接查询不使用join关键字,默认是inner join的规则,即内连接与SQL类似,HQL中的连接查

10、询也有三种,即inner join,left outer join,right outer join,含义也有SQL中的关连查询类似,章节目录,TPSTPHTPC,本章实例准备,本节将对本章实例进行必要的准备假设这样的业务需求:某网上音像店,专门经营图书和DVD由于Book和DVD存在相同的属性,因此应该抽象出一个父类,为Product产品类,Book和DVD类基于Product类进行扩展不管表如何设计,类的结构是基于面向对象设计分析设计得到的,可以保持不变,TPS,当主表与父类对应,从表分别对应子类时,可以使用TPS策略进行映射只需要有一个与父类同名的hbm.xml文件在hbm.xml中如下

11、配置子类,TPH,当只设计一张表,使用标识字段区分不同对象时,可以使用TPH策略进行映射只需要有一个与父类同名的hbm.xml文件在hbm.xml中如下配置区分值字段,TPC,如果设计两张表,每张表包含对应对象的全部字段,那么可以使用TPC策略映射只需要有一个与父类同名的hbm.xml文件在hbm.xml中如下配置子类,多态查询,HQL中支持多态查询,即查询父类对象时,同时可以返回符合查询条件的子类对象如from Product语句,可以同时返回Product类的所有子类对象,章节目录,批量操作延迟加载batch-size属性,批量操作,防止批量操作时内存溢出的方法使用Session的flus

12、h/clear方法使用StatelessSession接口,延迟加载,当某实例有关联实例时,Hibernate中默认使用延迟加载。即默认情况下,不查询关联实例可以配置lazy=“false”,取消延迟加载实际应用中,往往都使用延迟加载,以保证性能,batch-size属性,“N+1查询问题”中,当N值较大时,将降低性能batch-size属性可以定义批量处理的实体个数batch-size的值建议在5-30之间batch-size属性减少查询语句条数,从而提高性能,章节目录,整合Struts2与Hibernate的主要步骤,整合Struts与Hibernate,Hibernate框架和Struts2框架很容易整合使用二者分工不同,Hibernate用来完成数据持久层编程,Struts2用来完成MVC架构只要将持久层编程使用Hibernante实现即可,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号