Hibernate培训

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1目录页目录124原理和开发流程缓存机制3对象间关联关系HQL&Criteria3ORM框架原理Hibernate开发流程框架简介4框架(Framework)•什么是框架•框架的特点•框架的意义--为解决某一类问题给出的一整套方案--给出应用骨架,细节由开发者定制--面向接口--重用性--扩展性--屏蔽底层细节,提高开发效率--结构一致,稳定性好,利于协同工作5框架举例框架ORM框架DI框架MVC框架xxx框架HibernateMyBatisJPASpringGuicexxx实现Bxxx实现AStruts1Struts2SpringMVCWeld每一种框架,都是为了解决某一类的问题(ORM,DI,MVC等);同时,每一种框架都会有很多具体实现。6JDBCJavaApplicationJDBC优点:一些Java接口的集合,统一和数据库交互的规范,所有数据库都采用同一套操作流程。存在哪些不足?7存在的不足•更换数据库?--面向接口编程--更换实现类•对象和关系的阻抗?对象记录CUD对象记录R--不能直接面向对象操作,需要来回转换。save,update,deleteinsertintotableupdatetabledeletefromtableselect*from…•大型项目jdbc代码量?维护成本?--效率低,维护成本高。是否有解决方案?get(id)8面向关系面向对象ORM•Object/RelationMapping•对象-关系映射类表属性字段记录对象实例9面向对象vs面向关系面向对象面向关系共同点都用来访问数据库区别1用类定义对象,用属性保存数据。用表定义记录,用字段保存数据。区别2类之间的关系:继承,依赖,关联表间关系:主键-外键区别3面向对象方式访问数据库使用SQL语法ORM就是要在类和表之间建立一个标准的映射关系,从而使对象可以永久持久化到数据库中,也可将数据库中的数据还原成内存中的对象。提供一种面向对象的方式来访问数据库。10ORM框架原理JavaApplicationORMFramewrokJavaApplicationJDBC编程,SQL语句,对象封装JDBC编程SQL语句对象封装手动自动手动不使用ORM框架使用ORM框架配置框架ORMAPIDataBaseDataBase11ORM框架品牌ORM框架HibernateMyBatisJPA别名iBATIS,开源半自动ORM框架(知道)JavaPersistenceAPI(知道)开源ORM框架广泛使用(学习目标)12其他ORM框架品牌ActiveJDBC-JavaimplementationofActiveRecordpattern,inspiredbyRubyonRailsCayenne,Apache,opensourceforJavaKodo,commercialimplementationofbothJavaDataObjectsandJavaPersistenceAPITorque,anobject-relationalmapperforJavaAthenaFramework,opensourceJavaORM,nativesupportformultitenancySaaSandremotingtoAdobeFlexCarbonado,opensourceframework,backedbyBerkeleyDBorJDBCEbean,opensourceORMframeworkEclipseLink,EclipsepersistenceplatformEnterpriseObjectsFramework,MacOSX/Java,partofAppleWebObjectsiBATIS,maintainedbyASF,inactiveasof2010JavaDataObjects(JDO)JavaObjectOrientedQuerying(jOOQ)DataNucleus,opensourceJDOandJPAimplementationJPOX,opensourceJDO2referenceimplementationOpenJPA,Apache,opensource,supportsJPAAPIORMLite,lightweightopensourceframeworksupportingJDBCandAndroidTopLinkbyOracleQuickDBORM,opensourceORMframework(GNULGPL)ObjectDB13Hibernate优势•是一个全自动ORM框架–表结构自动生成–流程自动生成•无缝切换DataBase–代码零改动,仅更新部份配置文件即可。•面向对象操作,更简单易用的API–如:save(obj),update(obj),delete(obj)…14Hibernate发展历史2001Hibernate1.02003Hibernate2.0随后加入JBoss2005Hibernate3.0Interceptor支持Annotation2010实现JPA2.0规范2011Hibernate4.0multi-tenancyServiceRegistry15Hibernate编程流程1.配置Hibernate开发环境2.编写实体类,配置ORM3.配置hibernate.cfg.xml,log4j.properties4.调用HibernateAPI建立项目,导入hibernatejar包,数据库驱动jar包配置数据库连接信息,方言,实体类路径实体类规范,ORM配置(注解或XML)16下载Hibernate压缩包目录结构开发手册jar包源码18编写实体类–规范实体类=javabean规范+数据库中有表与之对应JavaBean规范:1.若干私有属性2.一个空参构造3.自动产生的get和set方法JavaBean在不同场合中,有不同的运用,也可能有不同的叫法。19编写实体类–示例getter&setter方法已省略实现Serializable接口是可选的,但建议实体类都实现这个接口20ORM配置•XML配置•Annotation配置@EntitypublicclassEvent{privateLongid;privateStringtitle;privateDatedate;@Id@GeneratedValuepublicLonggetId(){returnid;}privatevoidsetId(Longid){this.id=id;}publicDategetDate(){returndate;}publicvoidsetDate(Datedate){this.date=date;}publicStringgetTitle(){returntitle;}publicvoidsetTitle(Stringtitle){this.title=title;}}hibernate-mappingclassname=events.Eventtable=EVENTSidname=idcolumn=idgeneratorclass=native//idpropertyname=birthdaytype=timestamp/propertyname=title//class/hibernate-mappingORM配置信息,写在一个XML文件中ORM配置信息,写在实体类源代码中21XMLvsAnnotation比较项XML配置Annotation配置诞生版本JDK1.4JDK1.5配置信息写在一个外部的XML文件中写在实体类源码中编辑难度中等简单,自然编辑时间中等快捷可维护性中等,配置文件数与实体类数,成正比,删除实体类时,需删除对应的XML简单,无需写XML,直接删除实体类即可改变配置修改XML,无需编译修改类,需重新编译注意:1)XML和Annotation,都是实现同一个目标的不同方式;2)上课演示Annotation的配置方式,XML配置方式请课后自学,有问题再提问。22Annotation简介Annotation(注解),是Java5的新特性,提供一些本来不属于程序的Metedata(元数据),写在类名、属性名或方法名上方,表示类名、属性名或方法名具有某种特性。比如:注解类型位置作用@Deprecated类名、属性名或方法名上方已过时,不赞成使用。@Override方法名上方方法重写@SuppressWarnings类名、属性名或方法名上方抑制指定的警告信息@Test单元测试方法上方能在JUnit下测试运行23Hibernate常用注解-1注解类型位置作用是否必须常用属性@Entity类名上方指定该类是实体类YES无@Table类名上方指定该类对应的表NOname:表名称@Id属性的get方法上方属性是主键属性YES无@Column自定义该属性对应的字段信息(包括字段名,字段长度,字段约束等)NOname:字段名称length:字段长度unllable:非空约束unique:唯一约束@GeneratedValue缺省情况下:简单主键策略(比如:自增或序列等)NOStrategy:主键策略Generator:生成器24Hibernate常用注解-2注解类型位置作用是否必须属性@Enumerated属性的get方法上方属性是枚举类型NOEnumType.ORDINAL,保存数字EnumType.STRING,保存字符串@Transient属性不要持久化NO无@Temporal属性是日期类型NOTemporalType.TIMESTAMP,格式:年月日时分秒TemporalType.DATE,格式:年月日TemporalType.TIME,格式:时分秒25注解配置示例-1指定User是实体类指定User对应的表名是tbl_userid属性是主键属性简单主键策略(自增或序列)定义name属性对应的字段名是”u_name”,长度为30,非空约束26注解配置示例-2定义枚举类secret属性,临时调用,不需要保存数据库。定义各种属性title属性保存枚举字符串birthDate属性,以年月日格式保存27注解使用说明实际开发时,到底用哪些注解?可以按照以下步骤:1)先明确需求,一个对象有哪些属性;2)按实体类规范,写javabean,声明属性;3)按属性的不同类型,再加上匹配的注解。28Hibernate主配置文件文件名:hibernate.cfg.xml(默认名,约定俗称)可以更改名称位置:src根目录下29Hibernate配置信息JavaApplicationHibernateORMDataBase数据库连接信息driver,url,username,password属性(如:方言,显示sql,生成表…等)ORM配置以上信息都可以配置在hibernate主配置文件中30JavaapplicationDataSource数据源DataSourceDataBaseConnection1Connection2ConnectionPoolConnection1Connection2ConnectionN……DataSource可被看成是一个创建和维护Connection的工厂被占用被占用31DataSource数据源-2Hibernate内建的数据源无法用于产品用途可以使用c3p0数据源进行替换!步骤如下:1)加入hibernate-c3p0-*.jar、c3p0-*.jar这两个jar包;2)!--声明使用c3p0数据源(必选)--propertyname=hibernate.connection.provider_classorg.hibernate.c3p0.internal.C3P0Connection

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功