Hibernate培训ppt课件_第1页
Hibernate培训ppt课件_第2页
Hibernate培训ppt课件_第3页
Hibernate培训ppt课件_第4页
Hibernate培训ppt课件_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、124原理和开发流程缓存机制3对象间关联关系HQL & Criteria ORM 框架原理Hibernate 开发流程框架简介框架(Framework)什么是框架框架的特点框架的意义- 为处理某一类问题给出的一整套方案- 给出运用骨架,细节由开发者定制- 面向接口- 重用性- 扩展性- 屏蔽底层细节,提高开发效率- 构造一致,稳定性好,利于协同任务框架举例框架ORM 框架DI 框架MVC 框架xxx 框架HibernateMyBatisJPASpringGuicexxx实现Bxxx实现AStruts1Struts2SpringMVCWeld每一种框架,都是为理处理某一类的问题(ORM,DI,M

2、VC等);同时,每一种框架都会有很多详细实现。JDBCJavaApplicationJDBC优点:一些Java接口的集合,一致和数据库交互的规范,一切数据库都采用同一套操作流程。存在哪些缺乏?存在的缺乏改换数据库?- 面向接口编程- 改换实现类对象和关系的阻抗?对象记录CUD对象记录R- 不能直接面向对象操作,需求来回转换。save,update,deleteinsert into tableupdate tabledelete from tableselect * from 大型工程jdbc代码量?维护本钱?-效率低,维护本钱高。能否有处理方案?get(id)面向关系面向对象ORMObjec

3、t/Relation Mapping对象-关系映射类表属性字段记录对象实例面向对象 vs 面向关系面向对象面向关系共同点都用来访问数据库区别1用类定义对象,用属性保存数据。用表定义记录,用字段保存数据。区别2类之间的关系:继承,依赖,关联表间关系:主键-外键区别3面向对象方式访问数据库使用SQL语法ORM 就是要在类和表之间建立一个规范的映射关系,从而使对象可以永久耐久化到数据库中,也可将数据库中的数据复原成内存中的对象。提供一种面向对象的方式来访问数据库。ORM 框架原理Java ApplicationORM FramewrokJava ApplicationJDBC编程,SQL语句,对象封

4、装 JDBC编程SQL语句对象封装 手动自动手动不运用ORM框架运用ORM框架配置框架ORM APIData BaseData BaseORM 框架品牌ORM 框架HibernateMyBatisJPA别名iBATIS,开源半自动ORM框架(知道) Java Persistence API(知道)开源ORM框架广泛运用(学习目的)其他ORM 框架品牌 ActiveJDBC - Java implementation of Active Record pattern, inspired by Ruby on Rails Cayenne, Apache, open source for Java

5、Kodo, commercial implementation of both Java Data Objects and Java Persistence API Torque, an object-relational mapper for Java Athena Framework, open source Java ORM, native support for multitenancy SaaS and remoting to Adobe Flex Carbonado, open source framework, backed by Berkeley DB or JDBC Ebea

6、n, open source ORM framework EclipseLink, Eclipse persistence platform Enterprise Objects Framework, Mac OS X/Java, part of Apple WebObjects iBATIS, maintained by ASF, inactive as of 2021 Java Data Objects (JDO) Java Object Oriented Querying (jOOQ) DataNucleus, open source JDO and JPA implementation

7、 JPOX, open source JDO 2 reference implementation OpenJPA, Apache, open source, supports JPA API ORMLite, lightweight open source framework supporting JDBC and Android TopLink by Oracle QuickDB ORM, open source ORM framework (GNU LGPL) ObjectDBHibernate 优势是一个全自动 ORM 框架表构造自动生成流程自动生成无缝切换 DataBase代码零改动

8、,仅更新部份配置文件即可。面向对象操作, 更简单易用的 API如: save(obj), update(obj), delete(obj)Hibernate 开展历史2001Hibernate 1.02003Hibernate 2.0随后参与 JBoss2005Hibernate 3.0Interceptor支持Annotation2021实现JPA2.0规范2021Hibernate 4.0multi-tenancyServiceRegistryHibernate 编程流程1. 配置 Hibernate 开发环境2. 编写实体类,配置 ORM3. 配置 hibernate.cfg.xml,

9、perties4. 调用 Hibernate API建立工程,导入hibernate jar包,数据库驱动jar包配置数据库衔接信息,方言,实体类途径实体类规范,ORM配置(注解或XML)下载 H/orm/紧缩包目录构造开发手册jar包源码编写实体类 规范实体类 = java bean规范 + 数据库中有表与之对应 Java Bean 规范:假设干私有属性一个空参构造自动产生的get和set方法Java Bean 在不同场所中,有不同的运用,也能够有不同的叫法。编写实体类 例如getter & setter方法已省略实现Seriali

10、zable接口是可选的,但建议实体类都实现这个接口ORM 配置XML配置Annotation配置Entitypublic class Event private Long id;private String title;private Date date;IdGeneratedValuepublic Long getId() return id; private void setId(Long id) this.id = id;public Date getDate() return date;public void setDate(Date date) this.date = date;pu

11、blic String getTitle() return title;public void setTitle(String title) this.title = title;ORM配置信息,写在一个XML文件中ORM配置信息,写在实体类源代码中XML vs Annotation 比较项XML配置Annotation配置诞生版本JDK 1.4JDK 1.5配置信息写在一个外部的XML文件中写在实体类源码中编辑难度中等简单,自然编辑时间中等快捷可维护性中等,配置文件数与实体类数,成正比,删除实体类时,需删除对应的XML简单,无需写XML,直接删除实体类即可改变配置修改XML,无需编译修改类,

12、需重新编译留意:1XML和Annotation,都是实现同一个目的的不同方式; 2上课演示Annotation的配置方式,XML配置方式请课后自学,有问题再提问。Annotation简介Annotation(注解), 是Java5的新特性,提供一些本来不属于程序的Metedata(元数据),写在类名、属性名或方法名上方,表示类名、属性名或方法名具有 某种特性。比如:注解类型位置作用Deprecated类名、属性名或方法名上方已过时,不赞成使用。Override方法名上方方法重写SuppressWarnings类名、属性名或方法名上方抑制指定的警告信息Test单元测试方法上方能在JUnit下测试

13、运行Hibernate 常用注解 - 1注解类型位置作用是否必须常用属性Entity类名上方指定该类是实体类YES无Table类名上方指定该类对应的表NOname:表名称Id属性的get方法上方属性是主键属性YES无Column自定义该属性对应的字段信息(包括字段名,字段长度,字段约束等)NOname:字段名称length:字段长度unllable:非空约束unique:唯一约束GeneratedValue缺省情况下:简单主键策略(比如:自增或序列等)NOStrategy:主键策略Generator:生成器Hibernate 常用注解 - 2注解类型位置作用是否必须属性Enumerated属性

14、的get方法上方属性是枚举类型NOEnumType.ORDINAL,保存数字EnumType. STRING,保存字符串Transient属性不要持久化NO无Temporal属性是日期类型NOTemporalType. TIMESTAMP,格式: 年月日时分秒TemporalType.DATE,格式: 年月日TemporalType.TIME,格式: 时分秒注解配置例如 - 1指定User是实体类指定User对应的表名是tbl_userid属性是主键属性简单主键战略(自增或序列)定义name属性对应的字段名是u_name,长度为30,非空约束注解配置例如 - 2定义枚举类secret属性,暂时

15、调用,不需求保管数据库。定义各种属性title属性保管枚举字符串birthDate属性,以年月日格式保管注解运用阐明实践开发时,究竟用哪些注解?可以按照以下步骤:1先明确需求,一个对象有哪些属性;2按实体类规范,写java bean,声明属性;3按属性的不同类型,再加上匹配的注解。Hibernate 主配置文件文件名: hibernate.cfg.xml (默许名,商定俗称) 可以更改称号位置: src根目录下Hibernate 配置信息Java ApplicationHibernateORMData Base数据库衔接信息driver,url,username,password属性(如:方言

16、,显示sql,生成表等)ORM 配置以上信息都可以配置在hibernate主配置文件中Java applicationDataSource 数据源DataSourceData BaseConnection 1Connection 2Connection PoolConnection 1Connection 2Connection NDataSource 可被看成是一个创建和维护 Connection 的工厂被占用被占用DataSource 数据源-2Hibernate 内建的数据源无法用于产品用途可以运用 c3p0 数据源进展交换! 步骤如下:1参与hibernate-c3p0-*.jar、c

17、3p0-*.jar 这两个jar包;2 ernal.C3P0ConnectionProvider 5 20 300 50 3000Dialect 方言HibernateORMMySQL 方言Oracle 方言SQLServer 方言MySQL 方言Oracle 方言SQLServer 方言需求衔接哪个数据库,就选择该数据库的方言例如代码dtd不需求背,从project/etc文件夹下的模板中拷贝即可自动产生table显示SQL语句Log4J 简介Log4j是 的一个开源工程,经过运用Log4j,我们可以做到以下效果:1自定义日志信息保送的目的地是控制

18、台、文件、Email等各种方式;2灵敏控制每一条日志的输出格式;3经过定义每一条日志信息的级别,我们可以更加细致地控制日志的生成 过程,而不需求修正运用的代码。被广泛运用在各种框架工程中,包括SSH.定义以下级别: debug info warn error fatal越接近左侧,输出信息越多(详细); 越接近右侧,输出信息越少(仅出错时输出)命名:商定俗称就是perties位置:放在工程src根目录下perties 例如#define log level and output type.log4j.rootLogger=info, console# dir

19、ect log messages to stdout #log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target=System.outlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=%dABSOLUTE %5p %c1:%L - %m%n框架类工程中都会运用log4j,此文件编辑后普通不再更改.Hibernate AP

20、I 3.xConfigurationSessionFactorySessionTransactionQueryCriteriaHibernate的主配置信息,担任解析 hibernate.cfg.xmlSession工厂类,用于创建session等同于数据库衔接,添加缓存机制事务控制对象,用于提交或回滚事务基于 HQL 的查询基于约束条件的查询Configuration该对象的目的,就是初始化一个具备一切配置信息的对象。通常可以有以下两种途径:经过解析 src 根目录下的 hibernate.cfg.xml 来实现;(引荐运用)经过代码手动配置。XMLConfigurationSessionF

21、actory 关系表示图ConfigurationSessionFactoryDataBaseTransactionTransaction内存空间SessionSessionSessionTransactionHibernate API 4.xServiceRegistryConfigurationSessionFactorySessionTransactionQueryCriteria4.X 效力注册类,用于注册各项效力ServiceRegistry在较早版本的hibernate中已有的各种功能,在4.x版本中抽成Service。目的是为了使得工程构造更符合SOA(面向效力架构)的设计要求。

22、SessionFactory 例如代码v3.xv4.x代码演示Session API面向关系面向对象类表属性字段记录对象实例运转机制在开发时,程序员专注于面向对象编程;在运转时,Hibernate 自动将CRUD操作翻译成相应的 SQL 并执行。映射备注 - 1关于sql表名,字段名,保管字问题:假照实体类的类名,属性名中,出现sql保管字:order,desc,table.可以运用Table自定义表名; Column自定义字段名的方式来处理.关于字段约束的unique独一性无效的问题.缘由:SessionFactory在初始化时,会检查hibernate.hbm2ddl.auto属性,并自动

23、产生表.但此功能有缺损,无法产生独一性约束.处理方法:运用Hibernate的SchmaExport工具类.备注 - 2GeneratedValue可以自定义主键生成战略.在Oracle数据库中,主键战略是序列.但是默许情况下,是共享同一个序列: hibernate_sequence处理方案: 可以为每张表定义一个公用的序列.备注 - 3Get 和 Load 的区别:前往类型get()方法假设查询不到对象实例,前往null;load()方式假定对象实例一定存在,因此查询不到时会抛出异常。org.hibernate.ObjectNotFoundException对象本身属性load()方法延迟加载对象本身属性,待运用属性时再运转sql语句;get()方法一次性查询对象本身属性,直接运转sql语句。备注 - 4目前只能对单个实体类的进展操作,假设要实现1:1, 1:N, N:N, 需求学习完第三章对象间关联

温馨提示

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

最新文档

评论

0/150

提交评论