轻松学JavaWeb开发之Hibernate配置和会话.pptx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 轻松 JavaWeb 开发 Hibernate 配置 会话
- 资源描述:
-
第15章Hibernate配置和会话Hibernate的配置包括两个重要部分,一个是Hibernate的配置文件hibernate.cfg.xml,一个是实体类的映射文件。本章我们将对这两个文件的配置进行详细介绍以及如何使用Annotations配置映射,最后还将介绍Hibernate的3种对象状态及Session的各种方法及应用。15.1 传统方式配置HibernateHibernate的配置主要有两种方式:传统的配置方法以及使用Annotations进行配置的方法。首先我们先来学习传统的配置方式。15.1.1 配置Hibernate在使用Hibernate进行持久化之前,必须对Hibernate进行一系列配置,如数据库连接URL、数据库用户名和密码以及映射文件路径等。对于Hibernate的配置,最常用的就是采用XML格式的方法进行配置。Hibernate默认的配置文件为hibernate.cfg.xml,其包含的配置属性如表15.1所示。属性名属性名描述描述hibernate.dialectHibernate方言所对应的类名hibernate.show_sql设置是否在控制台输出SQL语句hibernate.connection.url设置数据库连接URLhibernate.connection.username设置数据库用户名hibernate.connection.password设置数据库密码hibernate.connection.driver_class设置数据库连接驱动类hibernate.default_schema生成SQL时,schema/tablespace的全限定名15.1.1 配置Hibernate注意:使用XML文件配置Hibernate时,可以将属性名简写,如将hibernate.show_sql直接写为show_sql。15.1.2 配置映射文件映射文件是持久化操作中的一个重点,它是数据库表和实体类之间的连接枢纽。通过映射文件,Hibernate就能知道实体类和那个数据库表相对应。映射文件也是采用XML文档规范,这样设计可以使其非常易读,而且容易修改。下面我们就对其包含的各种元素分别做一简要介绍。1.元素映射文件的根节点为,该节点包含一系列的可选属性,如schema和catalog属性。schema属性指定了数据库表所在的schema名称。注意:一个映射文件中只允许有一个元素。属性名属性名必必选默默认值描述描述schema否无指定数据库schema的名称catalog否无指定数据库catalog的名称default-cascade否none指定默认的级联风格default-access否property指定访问所有属性的策略default-lazy否true指定默认加载风格auto-import否true指定是否可以查询非全限定的类名package否无指定包前缀,若没有指定全限定的类名,将使用这个作为包名2.元素元素用来配置一个实体类与一个数据库表的关联。其中name属性用来指定实体类的名称,table属性用来指定数据库表的名称。元素的常用属性如表15.3所示。注意:元素下可以由多个元素,但是一般推荐值添加一个。即一个实体类对应一个映射文件。属性名属性名必必选默默认值描述描述name否无指定完全路径类名table否无指定数据库表名mutable否true指定类的实例是否可变proxy否无指定代理类接口,为延迟加载提供支持lazy否true指定是否使用延迟加载dynamic-update否false指定生成Update SQL时是否仅包含发生变动的字段dynamic-insert否false指定生成Insert SQL时,是否仅包含非空字段3.元素每一个实体类中都包含一个唯一的标识,元素能够定义该属性和数据库表中的主键字段的映射。元素包括的常用属性如表15.4所示。属性名属性名必必选默默认值描述描述name否无指定标识属性的名称,如果不指定,表示这个类没有标识属性type否无指定标识属性的Hibernate类型column否无指定数据库表中主键字段的名称unsaved-value否无指定该实例是刚创建的,尚未进行保存access否property指定Hibernate用来访问属性值的策略4.元素实体类的标识和数据库表的主键映射完成后,还需要为实体类的其他属性和数据库的其他字段进行映射,这个时候就需要使用到元素。元素的常用属性如表15.5所示。属性名属性名必必选默默认值描述描述name否无指定标识属性的名称,如果不指定,表示这个类没有标识属性type否无指定标识属性的Hibernate类型column否无指定数据库表中主键字段的名称access否property指定Hibernate用来访问属性值的策略not-null否true指定属性是否允许为空generated否never指定属性值是否由数据库生成15.2 使用Annotations配置映射在JDK 5.0之后出现了一种新的注释技术Annotations,而Hibernate也在其3.0之后的版本中添加了对Annotations的支持。通过在实体类中添加Annotations注释,可以达到替代映射文件的效果。15.2.1 使用Entity注释实体类Entity注释用来将一个普通的JavaBean标注为实体类。Entity注释由一个可选的name属性,用来设置属性名。并不是所有的JavaBean都能被标注为实体类,必须要满足如图15.7所示的3个条件。注意:使用Entity注释实体类,一定要使用import语句引入javax.persistence.Entity类,该类为Entity注释依赖类。15.2.2 使用Table注释实体类Table注释用来对实体类进行进一步注释,用来配置实体类到数据库表映射的更详细的信息。Table注释包含的属性信息如表15.6所示。注意:使用Table注释实体类,一定要使用import语句引入javax.persistence.Table类,该类为Table注释依赖类。属性名属性名属性描述属性描述catalog用来设置数据库名name用来设置数据库表名schema用来设置数据库表的所有者名称uniqueConstraints用来设置数据库表的约束15.2.3 使用Id注释实体类标识Id注释用来对实体类的标识进行配置。一个实体类一般只有一个标识,所以一个实体类中只出现一个Id注释。注意:使用Id注释实体类标识,一定要使用import语句引入javax.persistence.Id类,该类为Id注释依赖类。15.2.4 使用GenerateValue注释覆盖标识的默认访问策略使用Id注释实体类标识时将采用Hibernate的默认访问策略,这时可以使用GenerateValue注释覆盖标识的默认访问策略。GenerateValue注释包括两个属性,即使用generator属性指定标识生成器名,使用strategy属性指定标识生成策略。strategy属性的属性值为一个枚举类型,其中包含了4个枚举值,如表15.7所示。枚枚举值描述描述说明明javax.persistence.GeneratedType.AUTOstrategy属性默认值,表示自动确定表示的类型javax.persistence.GeneratedType.IDENTITY用来表示由数据库自动设置标识的值,如自动递增字段javax.persistence.GeneratedType.SEQUENTITY用来表示标识为SEQUENTITY类型javax.persistence.GeneratedType.TABLE用来保证另一个使用该标识的表记录的唯一性15.2.5 使用GenericGenerator注释生成标识生成器前面我们介绍了如何使用GenerateValue注释的strategy属性来指定生成策略,但是这些生成策略明显不能满足。这时可以使用GenericGenerator注释产生标识生成器,然后通过GenerateValue注释的generator属性来制定生成器的name属性,这样就可以采用指定的生成器生成标识。GenericGenerator注释包含3个属性,其属性说明如表15.8所示。属性名属性名属性描述属性描述name用来设置标识生成器名parameters用来设置标识生成器所需的参数strategy用来设置Hibernate内置的生成策略15.2.6 使用Column注释实体类非标识属性一个实体类除了有标识,一般还会有许多其他属性,这时可以使用Column注释这些属性。Column注释最常用的属性为name属性,该属性用来设置数据库表中的字段名。15.2.7 自定义AnnotationSessionFactory类来获得Session对象前面我们介绍了如何使用Annotation注释来完成实体类到数据库表的映射,这时还有一点需要特别注意。在以前获得SessionFactory对象是通过调用Configuration对象来实现的,但是这种方式不支持Annotations注释映射。要支持Annotations就必须使用AnnotationConfiguration类了。15.2.8 测试Annotations注释是否成功完成映射通过AnnotationSessionFactory可以加载Annotations注释方式的映射。通过调用Session对象的各种方法就可以完成各类数据库操作,如查询记录、添加记录等。在创建测试类之前,首先同样需要在Hibernate的配置文件hibernate.cfg.xml中添加映射信息。同映射文件配置映射不同,这里需要指定class属性为需要映射的实体类。具体配置方法如图15.15所示。15.2.8 测试Annotations注释是否成功完成映射完成如上步骤后,映射信息就已经全部完成了,下面我们就来创建一个测试类来测试使用Annotations注释是否能成功完成映射。我们首先打开MySQL数据库并在名为mysqltest的数据库中建立一个tb_employee表,并在表中按照前面所述的属性建立一条数据信息。15.3 会话(Session)的应用Hibernate提供了一个会话类Session,可以通过SessionFactory获得Session实例对象。通过调用Session对象的个方法即可完成数据库操作,如通过save方法来插入记录,通过load方法按标识取出记录,通过delete方法删除记录等。15.3.1 Hibernate对象状态一个实体类的实例可能处于3种不同的状态中的一种。这3种状态分别为瞬时状态、持久状态和托管状态。下面我们就来看这3种状态的详细说明,如图15.16所示。15.3.1 Hibernate对象状态我们总结这3中转台,再结合个状态的转换方法就可以得到其状态转换图,如图15.17所示。15.3.2 使用save方法持久化对象使用new关键字创建的对象并没有保存到数据库中,这时的对象为瞬时状态。通过Session对象的save方法能够将其转换成持久状态,并同时在数据库表中添加相应记录。save方法有两种重载方式,如图15.18所示。15.3.3 使用load方法装载对象如果知道某个对象的持久化标识,就可以使用Session对象的load方法从数据库中装载数据,使用load方法装载的对象是持久状态的。15.3.4 使用refresh方法刷新对象使用refresh方法能够根据数据库中的数据来刷新持久对象中的属性值。refresh方法有两种重载方法,如图15.23所示。15.3.5 使用delete方法删除对象可以使用Session对象的delete方法来删除数据库中的记录。delete方法有两个重载方式,如图15.26所示。15.4 小结本章主要讲述了Hibernate的配置和会话方面的知识,熟练掌握Hibernate的配置和会话是使用Hibernate操纵数据库的基础,也是学习高级Hibernate技术的基础。本章的重点内容是掌握使用Annotations配置映射的方法,难点内容是理解会话(Session)的应用的具体方法。希望读者在学习时多加练习,争取掌握。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




轻松学JavaWeb开发之Hibernate配置和会话.pptx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/5125511.html