Hibernate教程.ppt
《Hibernate教程.ppt》由会员分享,可在线阅读,更多相关《Hibernate教程.ppt(203页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Hibernatejava对象持久化技术对象持久化技术Hibernate入门OR映射技术通过HibernateAPI操纵数据库检索策略和方式数据库事务、并发、缓存与性能优化高级配置Hibernate入门入门v案例Hibernate关系数据库Customer类BusinessService类对象关系型映射Hibernate APIHibernate配置文件Customers表Hibernate入门入门v创建配置文件创建配置文件hibernate.dialect=jdbc:oracle:thin:peopres/peopres127.0.0.1:1521:oracle9=peopres=peopr
2、eshibernate.show_sql=trueHibernate配置文件配置文件Hibernate入门入门v创建持久化类public class Customer implements Serializable private static final long serialVersionUIDprivate Long id;private String name;private String email;public Customer()public Long getId()return id;public void setId(Long id)this.id=id;public Str
3、ing getName()return name;Hibernate入门入门v创建表createtableCUSTOMER(IDIntegerprimarykey,NAMEvarchar2(15)notnull,EMAILvarchar2(128)notnull,PASSWORDvarchar2(8)notnull,PHONEvarchar2(20),ADDRESSvarchar2(255),SEXchar(2),IS_MARRIEDchar(1),DESCRIPTIONclob,IMAGEblob,BIRTHDAYdate,REGISTERED_TIMEtimestamp);Hibernat
4、e入门入门v创建对象-关系映射文件 Hibernate入门入门v把customer持久化类映射到customers表:类和表的映射:持久化类的OID和表主键映射Hibernate入门入门vjava、hibernate、sql类型对应关系Customer类属性类属性javahibernateCutomers字段名字段名Sql类型类型Namejava.lang.StringstringNAMEVarchar(15)PhoneintintPHONEINTSexcharcharacterSEXCHAR(1)MarriedbooleanbooleanIS_MARRIEDBITDescriptionjav
5、a.lang.StringtextDESCRIPTIONCLOBimagebytebinaryIMAGEBLOBbirthdayjava.sql.DatedateBIRTHDAYDATEregisteredTimejava.sql.TimeStamptimestampREGISTERED_TIMETIMESTAMPHibernate入门入门v通过API操作数据库Hibernate入门入门v通过API操作数据库Hibernate入门入门vHibernate初始化1、创建configuration对象,把hibernate.properties文件读入内存。2、add()把映射文件读入内存3、bu
6、ildSessionFactory()数据源。重量级对象。Hibernate入门入门vHibernate初始化访问Session接口save()update()delete()load()find()Hibernate入门入门第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构数据库应用程序层数据库表述层业务逻辑层双层体系结构三层体系结构表述层:提供与用户交互的GUI(图形用户界面)。业务逻辑层:实现各种业务逻辑。数据库层:负责存放和管理应用的持久性数据。应用程序层:负责生成用户界面的代码和负责业务逻辑的代码 混合在一起。第一章第一章Java对象持久化概述对象持久化概述v应
7、用程序的分层体系结构区分物理层和逻辑层物理分层:每一层运行在单独的机器上,意味着创建分布式软件系统。逻辑分层:在单个的软件模块中完成特定的功能。不作特别说明,软件分层指的是逻辑分层。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构软件层的特征1.每个层由一组相关的类或组件构成,共同完成特定功能。2.层与层之间存在自上而下的依赖关系。不存在跨层访问。3.每个层对上层公开API,但具体的实现细节不对外透明。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构软件分层的优点1.伸缩性:能否支持更多用户。2.可维护性:需求变化时,影响一部分,不影响其它部分的
8、代码。3.可扩展性:增加薪功能的难以程度。4.可重用性:代码没冗余,满足多种需求。5.可管理性:管理系统的难易程度。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构软件分层缺点1.设计人员要求高2.体细结构合理划分,耗时大3.调试困难4.对于规模较小的应用,软件分层会降低开发效率。第一章第一章Java对象持久化概述对象持久化概述v应用程序的分层体系结构Java应用的持久化层表述层业务逻辑层数据库层表述层业务逻辑层持久化层数据库层第一章第一章Java对象持久化概述对象持久化概述vHibernate中间件特性应用1业务逻辑层应用2业务逻辑层应用3业务逻辑层持久化层(hibe
9、rnate)数据库1数据库2数据库3持久化层封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标:1.代码重用性高,可完成所有的数据访问操作。2.如果需要的话,能够支持多种数据库平台。3.具有相对独立性,当持久化层变化时,不会影响上层实现。第一章第一章Java对象持久化概述对象持久化概述v软件模型概念模型:模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为。实体间的关系有一对一、一对多和多对多。客户Nameage订单orderNumberprice1*第一章第一章Java对象持久化概述对象持久化概述v软件模型关系数据模型:在概念模型的
10、基础上建立起来的,用于描述这些关系数据的静态结构。有以下内容组成:1.若干表2.表的所有索引3.视图4.触发器5.表与表之间的参照完整性Customers表IDNAMEAGEORDERS表IDCustomerIDOrder_numberprice第一章第一章Java对象持久化概述对象持久化概述v软件模型域模型:在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。组成部分:1.具有状态和行为的域对象。2.域对象之间的关联。第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象(domainobject):构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象(B
11、usinessObject(BO).域对象可代表业务领域中的人、地点、事物或概念。域对象分为以下几种:实体域对象:通常是指业务领域中的名词。(plainoldjavaobject)。过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。事件域对象:应用中的一些事件(警告、异常)。第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系1.关联:类间的引用关系。以属性定义的方式表现。关联可分为一对一、一对多和多对多。还可分为单项关联和双向关联。OrderCustomerv单项关联:仅仅建立从Order到Customer的多对一关联,即仅仅在O
12、rder类中定义customer属性。或者仅仅建立从Customer到Order的一对多关联,即仅仅在Customer类中定义orders集合。v双项关联:既建立从Order到Customer的多对一关联,又建立从Customer到Order的一对多关联。单项多对一单项一对多双项多对一第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系2.依赖:类之间访问关系。无需定义成属性。在A中访问B中的方法或属性,或者A负责实例化B。BusinessServiceCustomer第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系3.聚集(Aggregation)
13、:整体与部分的关系。例人与手的关系。部分类的对象不能单独存在,他的生命周期依赖于整体类的对象的生命周期,整体消失时,部分也随之消失。Personhand:setHand第一章第一章Java对象持久化概述对象持久化概述v软件模型域对象间的关系4.一般化(Generalization):类之间继承关系。EmployeenameHourEmployeerateSalaryEmployeesalary第一章第一章Java对象持久化概述对象持久化概述内存Customer对象order对象数据库持久化重新加载到内存v软件模型域对象的持久化概念实体域对象在内存中创建后,不能永久存在。将实体域对象永久保存起来
14、,就是持久化的过程。通常只有实体域对象需要持久化,过程域对象和事件域对象一般不需要持久化。广义持久化指增、删、改、查。第一章第一章Java对象持久化概述对象持久化概述v直接通过JDBCAPI。第一章第一章Java对象持久化概述对象持久化概述Hibernate是什么是什么面向java环境的对象/关系数据库映射工具。1.开源的持久层框架.2.ORM(Object/RelationalMapping)映射工具,建立面向对象的域模型和关系数据模型之间的映射.3.连接java应用和数据库的中间件.4.对JDBC进行封装,负责java对象的持久化.5.在分层结构中处于持久化层,封装对数据库的访问细节,使业
15、务逻辑层更专注于实现业务逻辑Hibernate历史历史v2001年末,Hibernate的第一个版本发布;v2003年6月,Hibernate2发布,并于年末获得Jolt2004大奖,后被JBOSS收纳为其子项目之一;v2005年3月,Hibernate3正式发布。第一章第一章Java对象持久化概述对象持久化概述Hibernate作用作用vHibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。vHibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。第一章第一章Java对象持久化概述对象持久化概述第一章第一章
16、Java对象持久化概述对象持久化概述vORM简介对象-关系映射(ORM,即Object-RelationMapping).指单个组件中负责所有实体域对象的持久化,封装数据访问细节。域模型(对象、属性、关联、继承和多态)ORM APIORM 实现关系数据模型(表、字段、索引、主键和外键)业务逻辑层对象-关系映射文件(xml)持久化层数据库层参照ORM 充当业务逻辑层和数据库层之间的桥梁第一章第一章Java对象持久化概述对象持久化概述vORM简介对象-关系映射的概念面向对象概念面向关系概念类表对象表的行(记录)属性表的列(字段)域模型Address类Provincecitystreetzipcod
17、eCustomer类idnamehomeAddresscomAddress关系数据模型Customer表IDHOME_PROVINCEHOME_CITYCOM_PROVINCECOM_CITY注:域模型中类的数目要比关系数据模型中 表的数目多。第一章第一章Java对象持久化概述对象持久化概述vORM简介ORM中间件的使用方法采用元数据来描述对象-关系映射细节,元数据通常采用xml格式,并存放在专门的对象-关系映射文件中。只要配置了持久化类与表的映射关系,orm中间件在运行时就能够参照映射文件的信息,把域对象持久化到数据库中。public void deleteCustomer(Customer
18、 c)Session session=getSession();session.delete(c);执行步骤如下:1.运用反射机制,获得Customer对象的Customer.class类。2.参照映射文件得到Customer类对应的表的信息,以及和Customer类关联的类以及 相应的表信息。3.根据以上信息生成SQL语句。4.调用JDBC API,执行该语句。Hibernate软件包软件包v要使用Hibernate,需要得到Hibernate的jar包和相应的一些第三方包。v在使用Hibernate时,需要用到的是Hibernate.jar和lib目录下的一些第三方jar包。第一章第一章J
19、ava对象持久化概述对象持久化概述Hibernate软件包软件包vhibernate3.jar:包含Hibernate3的基础框架和核心API类库,是必须使用的jar包。vcglib-2.1.2.jar:CGLIB库,Hibernate用它来实现PO字节码的动态生成,它是非常核心的库,是必须使用的jar包。vdom4j-1.6.1.jar:dom4j是一个Java的XMLAPI,类似于jdom,用来读写XML文件。vcommons-collections.jar:ApacheCommons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。vc
20、ommons-logging.jar:ApacheCommons包中的一个,包含了日至功能,必须使用的jar包。第一章第一章Java对象持久化概述对象持久化概述Hibernate可选包可选包(1)vant-1.6.5.jar:Ant编译工具的jar包,用来编译Hibernate源代码的。它是可选包。vc3po-0.9.0.jar:C3PO是一个数据库连接池,Hibernate可以配置为使用C3PO的连接池,如果准备用这个连接池,就需要这个jar包。vconnector.jar:JCA(JavaCryptographyArchitecture,Java加密架构,java平台中用于访问和开发加密功
21、能的框架)规范,如果在AppServer上把Hibernate配置为Connector,就需要这个jar。一般AppServer都会带上这个包。vjaas.jar:JAAS是用来进行权限验证的,已经包含在JDK1.4里面了。所以它的实际上是多余的包。第一章第一章Java对象持久化概述对象持久化概述Hibernate可选包(可选包(2)vjdbc2_0-stdext.jar:JDBC2.0的扩展包,一般来说数据库连接池会用上它,不过AppServer都会带上它,所以也是多余的。vjta.jar:JTA(java事务处理的机制)规范,当Hibernate使用JTA的时候需要,不过AppServer
22、都会带上它,所以也是多余的。vjunit-3.8.1.jar:Junit包,当运行Hibernate自带的测试代码的时候需要,否则就不用。v和xml-apis.jar:Xerces是XML解析器,xml-apis实际上是JAXP。也是多余的包。第一章第一章Java对象持久化概述对象持久化概述第一章第一章Java对象持久化概述对象持久化概述vHibernateAPI简介1.提供访问数据库操作(session,transaction,query)2.配置hibernate接口(configuratioin)3.回调接口(Interceptor,Lifecycle,Validatable)4.用于扩
23、展的功能接口(UserType,CompositeUserType,IdentifierGenerator)Hibernate对JDBC做了轻量级的封装。所谓轻量级是指Hibernate并没有完全封装JDBC,java应用既可以通过HibernateAPI来访问数据库,还可直接通过JDBC API访问数据库。第一章第一章Java对象持久化概述对象持久化概述vHibernateAPI简介简介Hibernate核心接口1.Configuration配置配置hibernate,根启动,根启动hibernate,创建,创建sessionFactory对象。对象。2.sessionFactory负责创建
24、负责创建Session对象,可以通过对象,可以通过Configuration对象创建对象创建SessionFactory对象。对象。SessionFactory对象中保存了当前的数据库配置信息和所有映射关对象中保存了当前的数据库配置信息和所有映射关系以系以及及预定义的预定义的SQL语句。同时,语句。同时,SessionFactory还负责维护还负责维护Hibernate的二级的二级缓存。缓存。SessionFactory对象的创建会有较大的开销,而且对象的创建会有较大的开销,而且SessionFactory对象对象采取了线程安全的设计方式,因此在实际中采取了线程安全的设计方式,因此在实际中Se
25、ssionFactory对象可以尽量的共对象可以尽量的共享,在大多数情况下,一个应用中针对一个数据库可以共享一个享,在大多数情况下,一个应用中针对一个数据库可以共享一个SessionFactory实例实例Configurationconfig=newConfiguration().configure();SessionFactoryfactory=config.buildSessionFactory();3.Session使用最广泛,也被称为持久化管理器,它提供和持久化相关的操作。增、删、改、查等。不是线程安全的,因此,一个Session对象只可以由一个线程使用。避免多个线程共享。轻量级的,创
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 教程
限制150内