欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第4章Hibernate应用课堂.ppt

    • 资源ID:65723549       资源大小:2.63MB        全文页数:118页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第4章Hibernate应用课堂.ppt

    第4章Hibernate应用课堂 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望回顾:Struts 2应用Struts 2Struts 2开发流程:开发流程:开发流程:开发流程:2 2个个个个XML+ActionXML+Action类类类类+JSP+JSP页面页面页面页面+JavaBean+JavaBean校验器:校验器:校验器:校验器:validatevalidate方法或者方法或者方法或者方法或者XMLXML校验器校验器校验器校验器 注意:命名注意:命名注意:命名注意:命名+位置位置位置位置拦截器:拦截器:拦截器:拦截器:struts.xmlstruts.xml配置配置配置配置 拦截器类(继承拦截器类(继承拦截器类(继承拦截器类(继承AbstractInterceptorAbstractInterceptor ,重写,重写,重写,重写interceptintercept方法方法)国际化:国际化:国际化:国际化:struts.propertiesstruts.properties 相应语言的相应语言的相应语言的相应语言的propertiesproperties文件文件文件文件(*_zh _CN.properties(*_zh _CN.properties或或或或*_en _US.properties)*_en _US.properties)位置位置位置位置+命名命名命名命名2回顾:Struts 2应用两个问题:两个问题:两个问题:两个问题:Struts 2.1Struts 2.1以后版本过滤器:以后版本过滤器:以后版本过滤器:以后版本过滤器:官方推荐官方推荐官方推荐官方推荐org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 建议大家使用建议大家使用建议大家使用建议大家使用org.apache.struts2.dispatcher.FilterDispatcherorg.apache.struts2.dispatcher.FilterDispatcher 原因:如果你用原因:如果你用原因:如果你用原因:如果你用StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter,到时候处理中文就,到时候处理中文就,到时候处理中文就,到时候处理中文就会很麻烦会很麻烦会很麻烦会很麻烦 (详见(详见(详见(详见Struts 2.1Struts 2.1权威指南权威指南权威指南权威指南576576页页页页 )。)。)。)。*.action*.action配置配置配置配置struts2*.actionstruts2*.jsp3第4章 Hibernate应用4第4章 Hibernate应用4.1 Hibernate概述概述4.2 Hibernate应用基础应用基础4.3 Hibernate关系映射关系映射4.4 Hibernate高级功能高级功能4.5 Hibernate与与Struts 2整合应用整合应用54.1 Hibernate概述概述64.1 Hibernate概述概述1.ORM1.ORM简介简介简介简介对象对象对象对象/关系映射关系映射关系映射关系映射ORMORM(Object-Relation MappingObject-Relation Mapping)对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。简单地说,简单地说,简单地说,简单地说,ORMORM是通过使用描述对象和数据库之间映射的元数据,是通过使用描述对象和数据库之间映射的元数据,是通过使用描述对象和数据库之间映射的元数据,是通过使用描述对象和数据库之间映射的元数据,将将将将JavaJava程序中的对象自动持久化到关系数据库中。程序中的对象自动持久化到关系数据库中。程序中的对象自动持久化到关系数据库中。程序中的对象自动持久化到关系数据库中。对象和关系数据是业务实现的两种表现形式,业务实体在内存中表对象和关系数据是业务实现的两种表现形式,业务实体在内存中表对象和关系数据是业务实现的两种表现形式,业务实体在内存中表对象和关系数据是业务实现的两种表现形式,业务实体在内存中表现为现为现为现为对象对象对象对象,在数据库中表现为,在数据库中表现为,在数据库中表现为,在数据库中表现为关系数据关系数据关系数据关系数据。内存中的对象之间存在着。内存中的对象之间存在着。内存中的对象之间存在着。内存中的对象之间存在着关联和继承关系。而在数据库中,关系数据无法直接表达多对多关关联和继承关系。而在数据库中,关系数据无法直接表达多对多关关联和继承关系。而在数据库中,关系数据无法直接表达多对多关关联和继承关系。而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,联和继承关系。因此,联和继承关系。因此,联和继承关系。因此,ORMORM系统一般以中间件的形式存在,主要实系统一般以中间件的形式存在,主要实系统一般以中间件的形式存在,主要实系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。现程序对象到关系数据库数据的映射。现程序对象到关系数据库数据的映射。现程序对象到关系数据库数据的映射。一般的一般的一般的一般的ORMORM包括四个部分:包括四个部分:包括四个部分:包括四个部分:对持久类对象进行对持久类对象进行对持久类对象进行对持久类对象进行CRUDCRUD操作的操作的操作的操作的APIAPI(CRUDCRUD操作操作操作操作APIAPI)用来规定类和类属性相关查询的语言或用来规定类和类属性相关查询的语言或用来规定类和类属性相关查询的语言或用来规定类和类属性相关查询的语言或APIAPI(查询语言或查询语言或查询语言或查询语言或APIAPI)规定规定规定规定mapping metadatamapping metadata的工具(的工具(的工具(的工具(映射机制映射机制映射机制映射机制)让让让让ORMORM实现同事务对象一起进行脏数据检查实现同事务对象一起进行脏数据检查实现同事务对象一起进行脏数据检查实现同事务对象一起进行脏数据检查(dirty checking)(dirty checking)、延迟关、延迟关、延迟关、延迟关联抓取联抓取联抓取联抓取(lazy association fetching)(lazy association fetching)和其他优化操作的技术(和其他优化操作的技术(和其他优化操作的技术(和其他优化操作的技术(实现技术实现技术实现技术实现技术)74.1 Hibernate概述概述2.Hibernate体系结构体系结构Hibernate作为模型层作为模型层/数据访问层。它通过数据访问层。它通过配置文件配置文件(hibernate.cfg.xml或或hibernate.properties)和和映射文件映射文件(*.hbm.xml)把把Java对象或持久化对象(对象或持久化对象(Persistent Object,PO)映射到数据库中的数据表,然后通过操作映射到数据库中的数据表,然后通过操作PO,对数据库,对数据库中的表进行各种操作,其中中的表进行各种操作,其中PO就是就是POJO(普通(普通Java对象)加对象)加映射文件映射文件。Hibernate的体系结构如图的体系结构如图4.1所示。所示。图4.1 Hibernate体系结构84.2 Hibernate应用基础应用基础94.2 Hibernate应用基础应用基础Hibernate开发步骤:(1 1)创建)创建)创建)创建HibernateHibernate的配置文件。的配置文件。的配置文件。的配置文件。(2 2)创建持久化类。)创建持久化类。)创建持久化类。)创建持久化类。(3 3)创建对象)创建对象)创建对象)创建对象-关系映射文件。关系映射文件。关系映射文件。关系映射文件。(4 4)通过)通过)通过)通过Hibernate APIHibernate API编写访问数据库的代码。编写访问数据库的代码。编写访问数据库的代码。编写访问数据库的代码。104.2 Hibernate应用基础应用基础4.2.1 Hibernate4.2.1 Hibernate应用实例开发应用实例开发应用实例开发应用实例开发开发开发开发开发HibernateHibernate项目的步骤如下。项目的步骤如下。项目的步骤如下。项目的步骤如下。1 1建立数据库及表建立数据库及表建立数据库及表建立数据库及表在在在在XSCJXSCJ数据库中建立数据库中建立数据库中建立数据库中建立KCBKCB表,其表结构如附录表,其表结构如附录表,其表结构如附录表,其表结构如附录A.2A.2所示。所示。所示。所示。名称名称列名列名数据类型数据类型可空可空默认值默认值说明说明课程号课程号kchkchCharChar(3 3)否否无无主键主键课程名课程名kcmkcmCharChar(1212)是是无无开课学期开课学期kxxqkxxqsmallintsmallint是是无无1-81-8学时学时xsxsintint是是0 0学分学分xfxfintint是是0 0附录附录A.2 课程信息表课程信息表114.2.1 Hibernate应用实例开发应用实例开发2 2在在在在MyEclipseMyEclipse中创建对中创建对中创建对中创建对MySQL MySQL 的连接的连接的连接的连接启动启动MyEclipseMyEclipse,选择【,选择【WindowWindow】【Open PerspectiveOpen Perspective】【MyEclipse Database ExplorerMyEclipse Database Explorer】菜单项,打开】菜单项,打开MyEclipse MyEclipse DatabaseDatabase浏览器,右击菜单,如图浏览器,右击菜单,如图4.24.2所示,选择【所示,选择【NewNew】菜单项,出现如图菜单项,出现如图4.34.3所示的对话框,编辑数据库连接驱动。所示的对话框,编辑数据库连接驱动。图4.2 MyEclipse Database浏览器,创建一个新的连接图4.3 编辑数据库连接驱动 124.2.1 Hibernate应用实例开发应用实例开发编辑完成以后,在编辑完成以后,在MyEclipse DatabaseMyEclipse Database浏览器中,右击浏览器中,右击刚才创建的刚才创建的MyConnMyConn数据库连接,选择数据库连接,选择“Open“Open connection”connection”菜单项,打开名为菜单项,打开名为“MyConn”“MyConn”的数据连接,的数据连接,如图如图4.44.4所示。所示。图4.4 打开数据库连接134.2.1 Hibernate应用实例开发应用实例开发3 3创建创建创建创建WebWeb项目,命名为项目,命名为项目,命名为项目,命名为“HibernateTest”“HibernateTest”4 4添加添加添加添加HibernateHibernate开发能力开发能力开发能力开发能力右击项目名右击项目名HibernateTestHibernateTest,选择【,选择【MyEclipseMyEclipse】【Add Add Hibernate CapabilitesHibernate Capabilites】菜单项,出现如图】菜单项,出现如图4.54.5所示的对话框,所示的对话框,选择选择HibernateHibernate框架应用版本及所需要的类库。框架应用版本及所需要的类库。图4.5 选择Hibernate版本及所需Jar包144.2.1 Hibernate应用实例开发应用实例开发单击【Next】按钮,进入如图4.6所示界面。创建Hibernate配置文件hibernate.cfg.xml,将该文件放在src文件夹下,后面会详细介绍该文件内容。这里先说明添加Hibernate开发功能的步骤。图4.6 创建配置文件hibernate.cfg.xml 154.2.1 Hibernate应用实例开发应用实例开发单击【单击【NextNext】按钮,进入如图】按钮,进入如图4.74.7所示界面,指定所示界面,指定HibernateHibernate数据库连接细节。由于在前面已经配置一个名数据库连接细节。由于在前面已经配置一个名为为MyConnMyConn的数据库连接,所以这里只需要选择的数据库连接,所以这里只需要选择DB DB DriverDriver为为“MyConn”“MyConn”即可。即可。图4.7 指定hibernate数据库连接164.2.1 Hibernate应用实例开发应用实例开发单击【Next】按钮,出现如图4.8所示界面。Hibernate中有一个与数据库打交道重要的类Session。而这个类是由工厂SessionFactory创建的。这个界面询问是否需要创建SessionFactory类。如果需要创建,还需要指定创建的位置和类名。这些接口都会在后面详细介绍。单击【Finish】按钮,完成Hibernate的配置。图4.8 创建SessionFactory类来简化Hibernate会话处理174.2.1 Hibernate应用实例开发应用实例开发5.5.生成数据库表对应的生成数据库表对应的JavaJava类对象和映射文件类对象和映射文件首先在首先在MyEclispseMyEclispse下创建一个名为下创建一个名为“org.model”“org.model”的包,这个包将用来的包,这个包将用来存放与数据库表对应的存放与数据库表对应的JavaJava类类POJOPOJO。打开打开MyEclipse Database ExplorerMyEclipse Database Explorer视图。打开前面创建的视图。打开前面创建的MyConnMyConn数数据连接,选择【据连接,选择【XSCJXSCJ】【dbodbo】【TABLETABLE】菜单项,右击】菜单项,右击KCBKCB表,表,选择【选择【Hibernate Reverse EngineeringHibernate Reverse Engineering】菜单项,如图】菜单项,如图4.94.9所示,将所示,将启动启动Hibernate Reverse EngineeringHibernate Reverse Engineering向导,该向导用于完成从已有的向导,该向导用于完成从已有的数据库表生成对应的数据库表生成对应的JavaJava类和相关映像文件的配置工作。类和相关映像文件的配置工作。图4.9 Hibernate反向工程菜单184.2.1 Hibernate应用实例开发应用实例开发首先,选择生成的Java类和映像文件所在的位置,如图4.10所示。POJO(Plain Old Java Object,简单的Java对象),通常也称为VO(Value Object,值对象)。图4.10 生成Hibernate映射文件和Java类194.2.1 Hibernate应用实例开发应用实例开发使用POJO名称是为了避免和EJB混淆起来,其中有一些属性及getter、setter方法。当然,如果有一个简单的运算属性也是可以的,但不允许有业务方法。单击【Next】按钮,进入如图4.11所示的界面,选择主键生成策略。图4.11 配置反向工程细节204.2.1 Hibernate应用实例开发应用实例开发6.创建测试类在src文件夹下创建包test,在该包下建立测试类,命名为Test.java,代码如下:publicclassTestpublicstaticvoidmain(Stringargs)/调用调用HibernateSessionFactory的的getSession方法创建方法创建Session对象对象Sessionsession=HibernateSessionFactory.getSession();Transactionts=session.beginTransaction();/创建事务对象创建事务对象Kcbkc=newKcb();/创建创建POJO类对象类对象kc.setKch(100);/设置课程号设置课程号kc.setKcm(JavaEE应用开发基础应用开发基础);/设置课程名设置课程名/kc.setKxxq(newInteger(5).shortValue();/设置开学学期设置开学学期kc.setKxxq(newShort(short)5);/kc.setXf(newInteger(4).shortValue();/设置学分设置学分kc.setXf(newInteger(3);kc.setXs(newInteger(64);session.save(kc);/保存对象保存对象mit();/提交事务提交事务Queryquery=session.createQuery(fromKcbwherekch=100);Listlist=query.list();Kcbkc1=(Kcb)list.get(0);System.out.println(kc1.getKcm();HibernateSessionFactory.closeSession();/关闭关闭Session214.2.1 Hibernate应用实例开发应用实例开发7.7.运行运行因为该程序为因为该程序为Java ApplicationJava Application,所以可以直接运行。运,所以可以直接运行。运行程序,控制台就会打印出行程序,控制台就会打印出“JavaEEJavaEE应用开发基础应用开发基础应用开发基础应用开发基础”。在完全没有操作数据库的情况下,就完成了对数据的插在完全没有操作数据库的情况下,就完成了对数据的插入。入。224.2.2 Hibernate各种文件的作用各种文件的作用1.POJO类和其映射配置文件类和其映射配置文件POJO类如下:可以发现,该类中的属性和表中的字段是一一对应的。那么通过什么方法把它们一一映射起来呢?package org.model;public class Kcb implements java.io.Serializable private String kch;/对应表中KCH字段private String kcm;/对应表中KCM字段private Short kxxq;/对应表中KXXQ字段private Integer xs;/对应表中XS字段private Integer xf;/对应表中XF字段public Kcb()/省略上述属性的getter和setter方法234.2.2 Hibernate各种文件的作用各种文件的作用POJO类中的属性和表中的字段通过*.hbm.xml映射文件来一一对应。本例就是Kcb.hbm.xml,代码如下:244.2.2 Hibernate各种文件的作用各种文件的作用该配置文件大致分为3个部分:(1)类、表映射配置name属性指定POJO类为org.model.Kcb,table属性指定当前类对应数据库表KCB。(2)id映射配置Hibernate的主键生成策略分为三大类:Hibernate对主键id赋值、应用程序自身对id赋值、由数据库对id赋值。assigned:应用程序自身对id赋值。Kcb kc=new Kcb();/创建创建POJO类对象类对象kc.setKch(“100);/设置课程号设置课程号kc.setKcm(JavaEE应用开发基础应用开发基础);/设置课程名设置课程名kc.setKxxq(new Integer(5).shortValue();/设置开学学期设置开学学期kc.setXf(new Integer(4).shortValue();/设置学分设置学分kc.setXs(new Integer(59).shortValue();/设置学时设置学时 254.2.2 Hibernate各种文件的作用各种文件的作用lnative:由数据库对id赋值。当设置时,数据库负责主键id的赋值,最常见的是int型的自增型主键。lhilo:通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。lseqhilo:与hi/lo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在sequence中,适用于支持sequence的数据库,如Oracle。lincrement:主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。lidentity:采用数据库提供的主键生成机制,如SQL Server、MySQL中的自增主键生成机制。lsequence:采用数据库提供的sequence机制生成主键,如Oracle sequence。luuid.hex:由Hibernate基于128位唯一值产生算法,根据当前设备IP、时间、JVM启动时间、内部自增量等4个参数生成十六进制数值(编码后长度为32位的字符串表示)作为主键。即使是在多实例并发运行的情况下,这种算法在最大程度上保证了产生id的唯一性。当然,重复的概率在理论上依然存在,只是概率比较小。luuid.string:与uuid.hex类似,只是对生成的主键进行编码(长度16位)。lforeign:使用外部表的字段作为主键。lselect:Hibernate 3新引入的主键生成机制,主要针对遗留系统的改造工程。264.2.2 Hibernate各种文件的作用各种文件的作用(3 3)属性、字段映射配置)属性、字段映射配置属性、字段映射将映射类属性与库表字段相关联。属性、字段映射将映射类属性与库表字段相关联。name=kcm name=kcm 指定映像类中的属性名为指定映像类中的属性名为“kcm”“kcm”,此属性,此属性将被映像到指定的库表字段将被映像到指定的库表字段KCMKCM。type=java.lang.Stringtype=java.lang.String指定映像字段的数据类型。指定映像字段的数据类型。column name=KCMcolumn name=KCM指定类的指定类的kcmkcm属性映射属性映射KCBKCB表中的表中的KCMKCM字段。字段。274.2.2 Hibernate各种文件的作用各种文件的作用2.hibernate.cfg.xml文件文件该文件是Hibernate重要的配置文件,配置该文件主要是配置SessionFractory类。jdbc:mysql:/localhost:3306/javaeeorg.hibernate.dialect.MySQLDialectcom.mysql.jdbc.Driver liukunliukuncom.mysql.jdbc.Driver284.2.2 Hibernate各种文件的作用各种文件的作用2.hibernate.cfg.xml文件文件294.2.2 Hibernate各种文件的作用各种文件的作用3.HibernateSessionFactory3.HibernateSessionFactoryHibernateSessionFactoryHibernateSessionFactory类是自定义的类是自定义的SessionFactorySessionFactory,名字可以根据,名字可以根据自己的喜好来决定。这里用的是自己的喜好来决定。这里用的是HibernateSessionFactoryHibernateSessionFactory,在,在HibernateHibernate中,中,SessionSession负责完成对象持久化操作。该文件负责创建和关闭负责完成对象持久化操作。该文件负责创建和关闭SessionSession对象。对象。SessionSession对象的创建大致需要以下对象的创建大致需要以下3 3个步骤:个步骤:初始化初始化HibernateHibernate配置管理类配置管理类ConfigurationConfiguration。通过通过ConfigurationConfiguration类实例创建类实例创建SessionSession的工厂类的工厂类SessionFactorySessionFactory。通过通过SessionFactorySessionFactory得到得到SessionSession实例(事务)。实例(事务)。/定义一个静态字符串变量存放定义一个静态字符串变量存放Hibernate的配置文件名的配置文件名privatestaticStringCONFIG_FILE_LOCATION=/hibernate.cfg.xml;/创建一个线程局部变量对象创建一个线程局部变量对象privatestaticfinalThreadLocalthreadLocal=newThreadLocal();privatestaticConfigurationconfiguration=newConfiguration();/创建一个静态的创建一个静态的Configuration对象对象privatestaticorg.hibernate.SessionFactorysessionFactory;/定义一个静态的定义一个静态的SessionFactory对象对象privatestaticStringconfigFile=CONFIG_FILE_LOCATION;configuration.configure(configFile);sessionFactory=configuration.buildSessionFactory();Session session=(sessionFactory!=null)?sessionFactory.openSession():null;Transaction ts=session.beginTransaction();304.2.3 Hibernate核心接口核心接口1.Configuration接口接口Configuration负责管理负责管理Hibernate的配置信息。的配置信息。Hibernate运行时需要一些底层实现的基本信息。这些信息包括:数数据库据库URL、数据库用户名、数据库用户密码、数据库、数据库用户名、数据库用户密码、数据库JDBC驱动类、数据库驱动类、数据库dialect。用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现,如Hibernate数据库类型到特定数据库数据类型的映射等。使用使用Hibernate必须首先提供这些基础信息以完成初始化工作,为必须首先提供这些基础信息以完成初始化工作,为后续操作做好准备。后续操作做好准备。这些属性在这些属性在Hibernate配置文件配置文件hibernate.cfg.xml中加以设定,当中加以设定,当调用:调用:Configuration config=new Configuration().configure();时,时,Hibernate会自动在目录下搜索会自动在目录下搜索hibernate.cfg.xml文件,并将其读文件,并将其读取到内存中作为后续操作的基础配置。取到内存中作为后续操作的基础配置。314.2.3 Hibernate核心接口核心接口2.SessionFactory接口接口SessionFactory负责创建Session实例,可以通过Configuration实例构建SessionFactory。Configuration实例config会根据当前的数据库配置信息,构造SessionFacory实例并返回。SessionFactory一旦构造完毕,即被赋予特定的配置信息。也就是说,之后config的任何变更将不会影响到已经创建的SessionFactory实例sessionFactory。如果需要使用基于变更后的config实例的SessionFactory,需要从config重新构建一个SessionFactory实例。SessionFactory保存了对应当前数据库配置的所有映射关系,同时也负责维护当前的二级数据缓存和Statement Pool。由此可见,SessionFactory的创建过程非常复杂、代价高昂。这也意味着,在系统设计中充分考虑到SessionFactory的重用策略。由于SessionFactory采用了线程安全的设计,可由多个线程并发调用。Configuration config=new Configuration().configure();SessionFactory sessionFactory=config.buildSessionFactory();324.2.3 Hibernate核心接口核心接口3.Session接口接口Session是Hibernate持久化操作的基础,提供了众多持久化方法,如save、update、delete等。通过这些方法,透明地完成对象的增加、删除、修改、查找等操作。同时,值得注意的是,Hibernate Session的设计是非线程安全的,即一个Session实例同时只可由一个线程使用。同一个Session实例的多线程并发调用将导致难以预知的错误。Session实例由SessionFactory构建:Configuration config=new Configuration().configure();SessionFactory sessionFactory=config.buldSessionFactory();Session session=sessionFactory.openSession();334.2.3 Hibernate核心接口核心接口4.Transaction接口接口Transaction是Hibernate中进行事务操作的接口,Transaction 接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的UserTransaction,甚至可以是CORBA 事务。之所以这样设计是可以让开发者能够使用一个统一的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。事务对象通过Session创建。例如以下语句:Transaction ts=session.beginTransaction();mit();344.2.3 Hibernate核心接口核心接口5.Query5.Query接口接口接口接口例如以下语句:例如以下语句:在后面设置其值:在后面设置其值:上面的方法是通过上面的方法是通过“?”“?”来设置参数,还可以用来设置参数,还可以用“:”后跟变量的方后跟变量的方法来设置参数,如上例可以改为:法来设置参数,如上例可以改为:或者:或者:QueryQuery还有一个还有一个list()list()方法,用于取得一个方法,用于取得一个ListList集合的示例,此示例中集合的示例,此示例中包括可能是一个包括可能是一个ObjectObject集合,也可能是集合,也可能是ObjectObject数组集合。例如:数组集合。例如:Query query=session.createQuery(“from Kcb where kch=100”);Query query=session.createQuery(from Kcb where kch=?);query.setString(0,要设置的值);Query query=session.createQuery(from Kcb where kch=:kchValue);query.setString(kchValue,要设置的课程号值);query.setParameter(0,要设置的值);Query query=session.createQuery(from Kcb where kch=198);List list=query.list();354.2.4 HQL查询查询下面介绍HQL的几种常用的查询方式。1.基本查询基本查询基本查询是HQL中最简单的一种查询方式。下面以课程信息为例说明其几种查询情况。(1)查询所有课程信息Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();Query query=session.createQuery(from Kcb);List list=query.list();mit();HibernateSessionFactory.closeSession();364.2.4 HQL查询查询(2)查询某门课程信息.Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();/查询一门学时最长的课程Query query=session.createQuery(from Kcb order by xs desc);query.setMaxResults(1);/设置最大检索数目为1Kcb kc=(Kcb)query.uniqueResult();/装载单个对象mit();HibernateSessionFactory.closeSession();.374.2.4 HQL查询查询(3)查询满足条件的课程信息.Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();/查询课程号为001的课程信息Query query=session.createQuery(from Kcb where kch=001);List list=query.list();mit();HibernateSessionFactory.closeSession();.384.2.4 HQL查询查询2.条件查询查询的条件有几种情况,下面举例说明。(1)按指定参数查询.Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();/查询课程名为计算机基础的课程信息Query query=session.createQuery(from Kcb where kcm=?);query.setParameter(0,“JavaEE应用开发基础);List list=query.list();mit();HibernateSessionFactory.closeSession();.394.2.4 HQL查询查询(2)使用范围运算查询.Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();/查询这样的课程信息,课程名为JavaEE应用开发基础或数据结构,且学时在4060之间Query query=session.createQuery(from Kcb where(xs between 40 and 64)and kcm in(JavaEE应用开发基础,数据结

    注意事项

    本文(第4章Hibernate应用课堂.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开