Hibernate3-1环境及基础配置ppt课件_第1页
Hibernate3-1环境及基础配置ppt课件_第2页
Hibernate3-1环境及基础配置ppt课件_第3页
Hibernate3-1环境及基础配置ppt课件_第4页
Hibernate3-1环境及基础配置ppt课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、J2EE企业级运用开发Hibernate 框架义务1 开发第一个Hibernate运用本义务主要内容数据耐久化与ORMHibernate框架根底搭建Hibernate的开发环境Hibernate的根底配置Hibernate的生命周期Hibernate的常用API知识目的了解数据的耐久化与ORM了解Hibernate3的任务原理掌握Hibernate3进展数据耐久化的运用掌握Hibernate3的配置和映射了解Hibernate的生命周期才干目的能了解Hibernate的作用能开发第一个Hibernate程序 能在Web开发中综合struts和Hibernate能运用Hibernate的相关类实

2、现数据耐久化操作一、耐久化与ORM耐久化Persistence,即把数据如内存中的对象保管到可永久保管的存储设备中如磁盘。耐久化的主要运用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。耐久层就是专门担任耐久化任务的逻辑层,由它一致与数据库层打交道耐久层包括一个业务领域实体的模型,在耐久层中封装对数据库访问的细节,向业务逻辑公开接口。耐久化与ORM面向对象程序设计言语与关系数据库开展不同步时,需求一种中间处理方案,ORM Object/Relation Mapping 框架就是这样的处理方案。ORM是一类框架的总称,它概述了这类框架的根本特征:完成面向

3、对象的程序设计言语到关系数据库的映射。将关系数据库中数据用对象的方式表现,并用面向对象的方式组织对象,实现系统的业务逻辑。基于ORM框架完成映射后,既可利用面向对象程序设计言语的简单易用性,又可利用关系数据库的技术优势。耐久化与ORM常见ORM框架目前ORM框架的产品非常多,除了各大著名公司、组织的产品外,甚至,其他一些小团队也都有推出本人的ORM框架。目前流行的ORM框架有如下这些产品。传统的Entity EJB, Hibernate, IBATIS, Oracle的TopLink, OJB, JPA(Java Persistence API) 二、Hibernate概述简介Hibernat

4、e是目前最流行的开源的耐久层框架ORM框架,它是一个面向Java环境的对象/关系数据库映射工具。Hibernate也是一个轻量级的O/R Mapping框架,建立面向对象的域模型和关系数据模型之间的映射,是衔接java运用和数据库的中间件。Hibernate对JDBC进展封装,担任java对象的耐久化。真正实现了开发者采用面向对象的方式来操作关系数据库。Hibernate在分层构造中处于耐久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑。Hibernate概述优点Hibernate能在众多的ORM框架中脱颖而出,由于Hibernate与其他ORM框架对比具有如下优势:Hiber

5、nate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的反复性代码。 开源和免费的License,方便需求时研讨源代码、改写源代码、进展功能定制。Hibernate的性能非常好,由于它是一个轻量级框架。映射的灵敏性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系。 Hibernate是一个基于jdbc的主流耐久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码任务。 Hibernate概述体系构造在分层体系架构中,Hibernate担任运用程序与数据库之间的数据交换,起ORM中间件的作用,使得运用程序经过Hibernate的API就可以访问数据库。Hib

6、ernate运用数据库和配置信息来为运用程序提供耐久化效力以及耐久的对象配置衔接相关信息配置对象和表的映射关系 Hibernate概述-对象耐久化概述Hibernate中间件:Hibernate不和特定的业务领域相关,可以把恣意一个Java运用与数据库系统衔接,可以了解为是一种中间件。运用1业务逻辑层运用2业务逻辑层运用3业务逻辑层耐久化层(hibernate)数据库1数据库2数据库3耐久化层封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的耐久化层应该到达的目的:1.代码重用性高,可完成一切的数据访问操作。2.假设需求的话,可以支持多种数据库平台。3.具有相对独立性,当耐久化层

7、变化时,不会影响上层实现。public List getAllEmpl() List list = new ArrayList();/ ?con = new DBCon().getConn();String sql = select * from tb_empl;try pstmt = con.prepareStatement(sql);rs = pstmt.executeQuery();int id;String empl_id, empl_name, empl_depart, sex, intime, bz, interest, empl_pass1, prov, city;while (

8、rs.next() id = rs.getInt(1);empl_id = rs.getString(2);empl_name = rs.getString(3);empl_pass1 = rs.getString(4);sex = rs.getString(5);interest = rs.getString(6);empl_depart = rs.getString(7);prov = rs.getString(8);city = rs.getString(9);intime = rs.getString(10);bz = rs.getString(11);Empl e = new Emp

9、l();e.setId(id);e.setEmpl_id(empl_id);e.setEmpl_name(empl_name);e.setEmpl_pass1(empl_pass1);e.setSex(sex);e.setInterest(interest);e.setEmpl_depart(empl_depart);e.setProv(prov);e.setCity(city);e.setIntime(intime);e.setBz(bz);list.add(e); catch (SQLException e) / TODO Auto-generated catch blocke.print

10、StackTrace();return list;1.简化开发过程2.业务逻辑与数据逻辑相分别业务人员不需求思索数据表的逻辑构造3.数据访问逻辑与物理数据库的构造相分别数据访问逻辑的开发者不再关怀不同的物理数据库的差别性JDBC查询数据,并添加数据到列表中。Session session=HibernateSessionFactory.getSession();Query query=session.createQuery(from tb_empl);List allempls=query.list();ORM三、Hibernate3的运用运用步骤在运用中运用Hibernate,首先必需进展H

11、ibernate与数据库驱动、衔接设置、ORM映射文件的创建等。运用Hibernate的开发步骤如下:设计:普通首先进展领域对象的设计。由于在Hibernate中,我们的领域对象可以直接充任耐久化类。映射:定义Hibernate的映射文件,实现耐久化类和数据库之间映射。运用:运用Hibernate提供的API,实现详细的耐久化业务。第一个Hibernate程序的开发1加载包Hibernate并不依赖于任何效力器和框架,只需把Hibernate的jar包添加即可。方法:1.官网下载Hibernate包后加载必备包2. MyEclipse-Project Capabilities-add Hibe

12、rnate Capabilities 第一个Hibernate程序的开发2 创建数据库及表创建数据库并创建数据表person,包括属性:id,name,age.其中:主键id字段设为自动增长,对应于实体类中的id属性。第一个Hibernate程序的开发3 创建耐久化类在Hibernate 中是直接运用POJO来作为耐久化类的。耐久化类符合JavaBean的规范,包含:属性(普通有一个id,作为OID)、无参构造方法、getter和setter方法。在Web编程中,为了在会话中对Java对象进展耐久化,普通要实现Serializable接口。例如:定义耐久化类Person第一个Hibernate

13、程序的开发4 编写配置文件Hibernate的中心配置文件是hibernate.cfg.xml,也可以为perties。在此文件中配置了用于衔接数据库的信息和一些全局配置, 普通直接放在src目录下。可在MyEclipse下创建相应的数据库衔接,添加Hibernate功能包时,直接运用衔接,自动生成配置文件。例如:创建配置文件hibernate.cfg.xml com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserverlocalhost:1433;DatabaseName=pubs sa 1

14、23 org.hibernate.dialect.SQLServerDialect mysqlserver 第一个Hibernate程序的开发5 编写映射文件映射文件实现数据库字段与耐久化类属性匹配。在hibernate中习惯的命名为“*.hbm.xml文件,普通映射文件与其对应的耐久化类在同一级目录中。可以在MyEclipse中用反向工程生成。例如:创建映射文件person.hbm.xml 主键映射类-表映射字段映射第一个Hibernate程序的开发6 编写测试程序Hibernate可以运用于Java程序或Web程序 。先初始化Hibernate,创建一个SessionFactory实例;接

15、下来每次执行数据库事务时,先从SessionFactory中获获得一个Session实例,再经过它来保管、更新、删除、加载或查询Java对象。例如:创建Java测试程序 ,将一个对象的信息保管到数据库中。例如:测试数据保管public class HibernateTest public static void main(String args) Person person=new Person();person.setName(zhang);person.setAge(20);Session sess = HibernateSessionFactory.getSession();Transa

16、ction trans = sess.beginTransaction();sess.save(person);transmit();System.out.println(“祝贺,第一个Hibernate程序运转胜利,记录已插入数据表中!);sess.close();Configuration config = new Configuration(); config.configure();/ 配置文件名不是hibernate.cfg.xml时将文件名传入 SessionFactory sessionFactory = config.buildSessionFactory();/ 相当于JDB

17、C的注册驱动 Session session = sessionFactory.openSession();/ 相当于JDBC的getConnection Transaction tx = session.beginTransaction();/ Hibernate操作必需启动事务 Person person=new Person(); / 创建耐久化对象 person.setName(zhang); person.setAge(20); session.save(person);/ 保管对象 txmit();/ 耐久化到数据库中 Hibernate运转过程Hibernate的运转过程如下:1

18、、运用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,2、并用这些信息生成一个SessionFactory对象,3、然后从SessionFactory对象生成一个Session对象,4、并用Session对象生成Transaction对象; A、可经过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进展加载、保管、更新、删除、等操作; B、在查询的情况下,可经过Session对象生成一个Query对象,然后利用Query对象执行查询操作;假设没有异常,Trans

19、action对象将提交这些操作到数据库中。Hibernate运转过程运用程序 Configuration SessionFactory Session Query 映射文件.hbm.xmlTransaction配置文件hibernate.cfg.xml 回滚 提交 数据库 查询异常正常实际练习运用Hibernate实现用户数据的保管、删除步骤一手动方式1创建用户数据表2创建相应的用户实体类3配置hibernate环境 (加载必备包)4创建hibernate.cfg.xml配置文件(普通放src下)5创建映射文件*.hbm.xml(和实体类一个途径)6测试类步骤二反向工程四、Hibernate配

20、置和映射配置由于Hibernate是为了能在各种不同环境下任务而设计的,因此存在着大量的配置参数。Hibernate同时支持XML格式和properties格式的配置文件,假设Hibernate配置文件为XML格式,文件名普通默以为“hibernate.cfg.xml;假设为properties格式,那么默以为“perties。对于Web 运用而言,配置文件应放置在效力器的WEB-INFclasses 目录下,配置文件放在src目录下,自动部署。 jdbc:microsoft:sqlserverlocalhost:1433;Database=hibdb com.mic

21、rosoft.jdbc.sqlserver.SQLServerDriver sa 123 org.hibernate.dialect.SQLServerDialect true 属性名用途属性值hibernate.connection.driver_class设置数据库的驱动类驱动类名hibernate.connection.url设置连接数据库的URLURLhibernate.connection.username设置连接数据库的用户名用户名hibernate.connection.password设置连接数据库的密码密码hibernate.connection.pool_size设置连接池

22、的最大容量整型数据hibernate.connection.datasource设置数据源的JNDI名字JNDI名hibernate.dialect设置Hibernate的数据库方言方言类名hibernate.show_sql 是否把Hibernate运行时的SQL语句输出true或falsehibernate.format_sql 是否格式化输出的SQL语句true或falsehibernate.default_catalog在生成的SQL语句中,将默认的catalog加到表名上catalog值hibernate.connection.auotocommit设置是否启用数据库事务的自动提交t

23、rue或者falsehibernate.max_fetch_depth为单向关联的一对一和多对一的外连接抓取(outer join fetch)设置最大深度,数值为0将关闭默认的外连接抓取推荐数值为03 hibernate.default_batch_fetch_size设置关联的批量抓取数量建议值4、8、16hibernate.default_entity_mode指定默认的持久化实体表现形式dynamic-map、pojo或dom4jhibernate.order_updates 强制Hibernate按照被更新数据的主键,为SQL更新排序,可以减少在高并发系统中事务的死锁几率true或f

24、alsehibernate.generate_statistics 是否激活收集性能调节的统计数据 true或falsehibernate.order_updates利用主键值对将要更新的字段进行排序true或falseHibernate.user_indentifer_rollback若设置为true,如果表中的所有数据被删除,主键标识符将被重置true或falsehibernate.use_sql_comments 是否生成有助于调试的注释信息true或false四、Hibernate配置和映射映射概述对象关系映射ORM是一种为理处理面向对象与面向关系数据库互不匹配景象的技术,即ORM是经

25、过运用描画对象和数据库之间映射的元数据,将Java程序中的对象自动耐久化到关系数据库中。Hibernate映射主要是经过对象关系映射文件实现,通常用XML文档来定义。对象关系映射文件把数据库中的实体(普通为二维表)映射到面向对象中的实体对象,把数据库中多个表之间的相互关系也反映到映射好的类中。四、Hibernate配置和映射映射构造映射文件以耐久化类为根底,将耐久化类中出现的属性在映射文件中表达出来。实体映射是类与表之间的联络纽带,实体映射的中心内容是实体类与数据表之间的映射定义。Hibernate中,实体关系映射主要包括三个部分:类表映射主键映射 字段映射 四、Hibernate配置和映射元

26、素是Hibernate映射文件的根元素。1.类表映射 配置代码如下:其中,class表示类和数据库中的表的映射关系;name属性指定类的称号,这里需求给出完好的类名;table属性指定与类映射的表名。经过映射,类对应于数据库中的表,类的实例对应于表中的记录。四、Hibernate配置和映射关系数据库中依托主键来区分不同的记录,被映射的类必需定义对应数据库主键字段。2. 主键映射 其中,id表示主键映射;name属性指定类中哪个属性作为OID;type属性指定Hiberante的映射类型;column属性表示数据表中主键字段的名字。 指定了主键的生成方式,class属性指定主键的生成方式四、Hi

27、bernate配置和映射OIDHibernate运用对象标识符(OID)来建立内存中的对象和表中记录的对应关系,它和表的主键对应为了保证OID的独一性和不可变性,应该让Hibernate而不是运用程序来为OID赋值,数据库表的主键值也是可由Hibernate生成.四、Hibernate配置和映射内置生成器可以借助Hibernate来自动生成一个OID。运用的是元素,class属性设定标识符生成器的类名,可写它的完好类名:org.hibernate.id.IncrementGenerator,普通用其简称:increment。关系数据库中依托主键来区分不同的记录,主键有自然主键与代理主键:自然主

28、键指充任主键的字段本身具有一定的含义,是构成记录的组成部分,如学生的学号代理主键指充任主键的字段本身不具有业务含义,只起主键主键作用,如自动增长类型的ID号等。在Hibernate运用方案中,引荐运用代理主键。四、Hibernate配置和映射内置生成器increment: 当向数据库中插入新记录时,主键自动增1,与底层数据库无关,大部分数据库都支持increment生成方式。identity: 运用数据库提供的主键生成机制,自动为主键赋值。与底层数据库相关,不便于不同数据库之间的移植,数据库必需支持自动增长字段类型sequence: Hibernate根据底层数据库序列来生成标识符,前提是条件

29、是底层数据库支持序列(如Oracle)。hilo: Hibernate根据high/low算法来生成标识符,需求一个表来保管额外的主键信息,这样生成的标识符只在特定的数据库中是独一的。native: 由Hibernate根据不同的数据库选择主键的生成方式,如identity、sequence或hilo,与底层数据库无关,便于不同数据库之间的移植。uuid.hex: Hibernate采用128位的UUID算法来生成标识符,UUID算法可以在网络环境中生成独一的字符串标识符。uuid.string: 运用UUID算法来生成标识符,UUID被编码为一个16个字符长的恣意ASCII组成的字符串。as

30、signed: 由Java运用程序担任为对象生成标识符,主键值完全由运用程序担任,需在保管数据前完成。 四、Hibernate配置和映射内置生成器选用Hibernate内置的标识生成器时,应根据所选用的数据库产品而定。假设数据库产品为MySQL或MS SQL Server,那么优先思索identity生成器;假设是Oracle那么可优先思索sequence生成器;假想象提高运用的可移植性,开发跨平台的运用那么可选用native生成器。四、Hibernate配置和映射字段映射将映射类型与数据库表的字段相关,普通包含对象的属性名、数据表的字段名和数据类型。3.字段映射 其中,property表示属

31、性设置,name表示类中属性名,将映射到指定的数据表字段;type表示映射的数据类型;column表示数据表字段,name表示数据表中对应于类属性的字段名。实际练习创建机构(Branch)实体,实现机构信息的耐久化,正确配置实体映射文件(Branch.hbm.xml)留意:主键的生成战略思索:对应于实体属性不同类型,type属性值该设为什么?四、Hibernate配置和映射关于type属性可以是如下几种:1Hibernate根本类型名比如:integer, string, character, date, timestamp, float, binary, serializable, obje

32、ct, blob。2一个Java类的名字,这个类属于一种默许根底类型比如: int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob。3一个可以序列化的Java类的名字。4一个自定义类型的类的名字。比如:com.test.type.MyCustomType。四、Hibernate配置和映射类型关系Hibernate的内置类型通常运用和Java类型一样的名字,它可以把Java根本类型、Java时间和日期类型、Java大对象类型及JDK常用的Java类型映射到相应的规范SQL类型。Jav

33、a运用经过Hibernate访问数据库,而Hibernate又经过JDBC驱动程序访数据库,JDBC对底层数据库SQL类型进展封装,向上提供规范的SQL类型接口,这样Hibernate就可以根据底层数据库运用的SQL方言,把规范SQL类型翻译成底成数据库类型。四、Hibernate配置和映射类型映射关系下表列出了Hibernate映射类型、对应的JAVA根本类型(包括它们的包装类)和以及对应的规范SQL类型。四、Hibernate配置和映射类型映射关系在Java中,代表时间和日志的类型包括:java.util.Date和java.util.Calendar。此外在JDBC API中还提供了三个

34、扩展java.util.Date类的之类:java.sql.Date、java.sql.Time和java.sql.Timestamp,这三个类分别和规范的SQL类型中的DATA、TIME、TIMESTAMP类型对应在JDBC API中提供了java.sql.Clob和java.sql.Blob类型,它们分别和规范SQL中的CLOB和BLOB类型对应。实际练习创建员工Employee实体,创建其映射文件,配置适宜的类型对应关系,实现员工信息的根本管理留意:员工属性的类型匹配。五、耐久化对象与生命周期Hibernate中有三种形状,对其生命周期形状有了深化了解,才干更好的了解Hibernate的

35、运转机制。对于需求耐久化的Java对象,在其生命周期中普通有三种形状:暂时形状、耐久化形状、游离形状,这三种形状之间可以相互转化。一个耐久化类的实例能够处于三种不同形状中的某一种。这三种形状的定义那么与所谓的耐久化上下文(persistence context)有关。Hibernate的Session对象就是这个所谓的耐久化上下文。五、耐久化对象与生命周期暂时形状普通是用new创建的对象,没有进展耐久化,还未处于Session中,此时的对象叫暂时对象;耐久化形状是对象曾经参与到了Session缓存中,如经过hibernate语句保管的对象,此时的对象叫做耐久化对象;游离形状是耐久化对象脱离了S

36、ession对象,如Session缓存被清空的对象,虽然曾经耐久化了,但是不在Session中,此时的对象叫做游离对象。五、耐久化对象与生命周期六、Hibernate中心类概述运用Hibernate中心接口与类不仅可以存储和获得耐久对象,还可以进展事务控制。Hibernate的中心接口一共有5个,分别为:SessionFactorySessionTransactionQueryConfiguration 获取找到hibernate.cfg.xml 链接 六、 Hibernate中心类Configuration类Configuration类的作用是对Hibernate进展配置,以及对它进展启动。

37、Configuration可以完成以下几方面的任务。1加载配置文件。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象,2动态添加映射文件。还可以利用Configuration类在程序中添加XML映射定义文件。3也可以经过Configuration指定配置属性在Hibernate的启动过程中,Configuration类的实例首先定位缺省XML配置文件hibernate.cfg.xml,并读取关的配置工程,然后创建出一个SessionFactory对象。六、 Hibernate中心类Sessio

38、nFactory类这里用到了一个设计方式工厂方式,用户程序从工厂类SessionFactory中获得Session的实例。SessionFactory不是轻量级的。它的设计者的意图是让它能在整个运用中共享。典型地来说,一个工程通常只需求一个SessionFactory就够了,但是当工程要操作多个数据库时,必需为每个数据库指定一个SessionFactory。SessionFactory在Hibernate中实践起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些未来有能够反复利用的数据。获取:SessionFactory sessionFac

39、tory = config.buildSessionFactory();六、 Hibernate中心类Session类Session是耐久层操作的根底,相当于JDBC中的Connection。在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。通常将每一个Session实例和一个数据库事务绑定,也就是说,每执行一个数据库事务操作,都应该先创建一个新的Session实例。获取:Session session = sessionFactory.openSession();六、 Hibernate中心类Session类对于数据操作通常会是CRUD,Sess

40、ion接口中提供了的save、load、delete、update等方法完成耐久层操作。save (Object object)首先为给定的自在形状Transient的对象根据配置生成一个标识并赋值,然后将其耐久化。load (Class theClass, Serializable id)在符合条件的实例存在的情况下,根据给定的实体类和标识前往耐久化形状的实例。get (Class theClass, Serializable id)delete (Object object)从数据库中移除耐久化persistent对象的实例。update (Object object)根据给定的detac

41、hed游离形状对象实例的标识更新对应的耐久化实例。六、 Hibernate中心类Session类Session.save()方法用于实体对象的耐久化保管,也就是说当执行session.save()方法时会生成对应的insert SQL语句,完成数据的保管。代码:Person user=new Person();user.setName(“zx);/开场一个事务Transaction tx=session.beginTransaction();session.save(user);session.flush();/提交txmit();session.close();/封锁事务tx.close六、 Hibernate中心类Session类delete()方法用于从数据库中删除一个实体所对应的数据,假设传入的对象是耐久化对象,那么当清理缓存时,就会执行delete操作。假设传入的是脱管对象,那么首先会使该对象与session相关联,然后当清理缓存时,再执行delete操作。代码如下:Session session=sessionFactory()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论