收藏 分销(赏)

Hibernate基础---ORM简介.pptx

上传人:a199****6536 文档编号:4607066 上传时间:2024-10-06 格式:PPTX 页数:18 大小:376.85KB 下载积分:8 金币
下载 相关 举报
Hibernate基础---ORM简介.pptx_第1页
第1页 / 共18页
Hibernate基础---ORM简介.pptx_第2页
第2页 / 共18页


点击查看更多>>
资源描述
Java EE实用教程第第8章章 Hibernate基础基础8.1 ORM简介简介8.2 建立第一个建立第一个Hibernate程序程序8.3 Hibernate工作流程工作流程8.4 Hibernate常用接口常用接口Java EE实用教程8.1 ORM简介简介对象关系映射,其实从字面上就可以理解其含义,就是把关系与对象映射起来,关系指的是关系数据库,而对象指的是程序中的类对象。例如,在数据库中有一个用户表userTable,该表中有id、username、password三个字段,其中id是标志,这样一个表就可以在程序中映射成类“User.java”,该类中定义3个属性,对应表中的3个字段,如图8.1所示。图8.1ORM映射Java EE实用教程8.2 建立第一个建立第一个Hibernate程序程序本书应用的是Hibernate3.2版本,下载完成后解压下载的压缩文件,解压出来的文件夹中包含了Hibernate的源代码、示例及Hibernate的应用开发包hibernate3.jar,该文件夹下还包含了lib文件夹,该文件夹下包含了Hibernate编译和运行所依赖的第三方类库。准备工作完成后,就可以对项目进行开发了。首先要建立数据库及表,在SQLServer中建立数据库“Test”,在该库中建立表“userTable”,该表的结构如表8.1所示。字 段 名数据类型主 键自 增允许为空描 述idint是增1标识idusernamevarchar(50)用户名passwordvarchar(50)密码表8.1 userTable表Java EE实用教程8.2.1 建立项目建立项目表建立完成后,就可以建立项目了。本例将项目命名为“HibernateDemo”,加载Hibernate的类库,这里有两种方法加载Hibernate类库。第一种是直接把Hibernate的类库复制到项目的lib下,第二种是应用MyEclipse提供的支持Hibernate的JARs,具体操作步骤为:右击项目名“HibernateDemo”,依次选择“BuildPath”“configureBuildPath.”,出现如图8.2所示的对话框。图8.2选择Hibernate的类库对话框Java EE实用教程8.2.1 建立项目建立项目选择右边的“AddLibrary.”按钮,出现如图8.3所示的对话框,选中“MyEclipseLibraries”,单击“Next”按钮,出现如图8.4所示的选择要添加的类库界面,选中“Hibernate3.2CoreLibraries”,单击“finish”按钮,回到图8.2所示的界面,但此时在Libraries框中多出了“Hibernate3.2CoreLibraries”类库,单击“OK”完成类库的添加。图8.3AddLibrary对话框图8.4选择要添加的类库界面Java EE实用教程8.2.1 建立项目建立项目由于有数据库的连接,所以还必须把SQLServer所需的类库复制到项目的lib下。这些工作完成后,项目的目录如图8.5所示。图8.5项目目录结构Java EE实用教程8.2.2 创建创建POJO类及其映射文件类及其映射文件在src下建立包“org.vo”,在包中创建类User.java,编写代码为:packageorg.vo;/建立在该包下publicclassUserprivateintid;privateStringusername;privateStringpassword;/生成上述属性的get和set方法Java EE实用教程8.2.2 创建创建POJO类及其映射文件类及其映射文件该类是一个典型的POJO类,定义了3个属性,分别对应表中的3个字段,并生成了它们的get和set方法。但仅仅建立这样一个类是不够的,还没有指明类的属性与表中的字段之间是怎么映射的,它们之间的映射关系的指定还要依赖一个配置文件“*.hbm.xml”,其中“*”一般定义为要映射的类名,在文件中的位置一般与POJO类处于同一目录下,故在该包下建立映射文件User.hbm.xml,代码编写为:Java EE实用教程8.2.3 创建创建Hibernate的核心配置文件的核心配置文件应用Hibernate就要配置Hibernate,配置Hibernate主要就是创建Hibernate配置文件和SessionFactory,Hibernate的配置文件可以是hibernate.properties或hibernate.cfg.xml。由于hibernate.cfg.xml配置更加完整、方便,故一般都会应用hibernate.cfg.xml。该文件是应用Hibernate的核心配置文件,本例配置。Java EE实用教程8.2.4 创建并运行测试类创建并运行测试类经过前面的准备后,就可以创建一个类来测试Hibernate是否配置成功,该测试类可以通过对数据库的增、删、改、查操作来观察结果。本例编写测试类代码。可以发现,该测试类是包含主函数的类,故可以直接按“JavaApplication”程序运行,运行后,控制台输出结果如图8.6所示。图8.6程序运行后控制台输出结果Java EE实用教程8.3 Hibernate工作流程工作流程Hibernate的工作流程很简单,最终目的就是获得Session对象来对数据库进行CURD工作(CURD,即create、update、read、delete,也就是经常说的增、删、改、查操作),Session对象的获得需要应用几个类:Configurationcfg=newConfiguration();SessionFactorysessionFactory=cfg.configure().buildSessionFactory();Sessionsession=sessionFactory.openSession();Java EE实用教程8.3 Hibernate工作流程工作流程纵观上例,可以从总体上观察出Hibernate的大体体系结构,如图8.7所示。Hibernate层的作用就是把数据库映射成类,然后应用程序应用Hibernate提供的操作数据的接口来对数据库进行操作,取代了以前的JDBC,实现了面向对象的操作。图8.7Hibernate的体系结构图Java EE实用教程8.4 Hibernate常用接口常用接口8.4.1 Configuration接口接口使用Hibernate必须首先提供这些基础信息以完成初始化工作,为后续操作做好准备。这些属性在Hibernate配置文件hibernate.cfg.xml中加以设定,当调用:Configurationcfg=newConfiguration().configure();时,Hibernate会自动在根目录下(即classes下)搜索hibernate.cfg.xml文件,并将其读取到内存中作为后续操作的基础配置。Java EE实用教程8.4.2 SessionFactory接口接口SessionFactory负责创建Session实例,可以通过Configuration实例构建SessionFactory。Configurationcfg=newConfiguration().configure();SessionFactorysessionFactory=cfg.buildSessionFactory();Configuration实例cfg会根据当前的数据库配置信息,构造SessionFacory实例并返回。SessionFactory一旦构造完毕,即被赋予特定的配置信息,也就是说,cfg的任何变更将不会影响到已经创建的SessionFactory实例sessionFactory。如果需要使用基于变更后的cfg实例的SessionFactory,需要从cfg重新构建一个SessionFactory实例。同样,如果应用中需要访问多个数据库,针对每个数据库,应分别对其创建对应的SessionFactory实例。Java EE实用教程8.4.3 Session接口接口Session是Hibernate持久化操作的基础,提供了众多持久化方法,如save、update、delete、query等。通过这些方法,透明地完成对象的增、删、修、查等操作。同时,值得注意的是,HibernateSession的设计是非线程安全的,即一个Session实例同时只可由一个线程使用,同一个Session实例的多线程并发调用将导致难以预知的错误。Session实例由SessionFactory构建:Configurationcfg=newConfiguration().configure();SessionFactorysessionFactory=cfg.buldSessionFactory();Sessionsession=sessionFactory.openSession();Java EE实用教程8.4.4 Transaction接口接口Transaction是Hibernate中进行事务操作的接口,Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction,甚至可以是CORBA事务。之所以这样设计是可以让开发者能够使用一个统一的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。事务对象通过Session创建,例如以下语句:Transactionts=session.beginTransaction();Java EE实用教程8.4.5 Query接口接口在Hibernate2.x中,find()方法用于执行HQL语句。Hibernate3.x废除了find()方法,取而代之的是Query接口,它们都用于执行HQL语句。Query和HQL是分不开的。Queryquery=session.createQuery(fromUserwhereid=1);上面的语句中查询条件id的值“1”是直接给出的,如果没有给出,而是设为参数就要用Query接口中的方法来完成。例如以下语句:Queryquery=session.createQuery(fromUserwhereid=?);就要在后面设置其值:query.setInt(0,要设置的值);上面的方法是通过“?”来设置参数的,还可以用“:”后跟变量的方法来设置参数,如上例可以改为:Queryquery=session.createQuery(fromUserwhereid=:idValue);query.setInt(idValue,要设置的id值);Java EE实用教程8.4.5 Query接口接口由于上例中的id为int类型,所以设置的时候用setInt(),如果是String类型就要用setString()。还有一种通用的设置方法,就是setParameter()方法,不管是什么类型的参数都可以应用。其使用方法是相同的,例如:query.setParameter(0,要设置的值);Query还有一个list()方法,用于取得一个List集合的示例,此示例中包含的集合可能是一个Object集合,也可能是Object数组集合。例如:Queryquery=session.createQuery(fromUserwhereid=1);Listlist=query.list();
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服