Hibernate(一).ppt_第1页
Hibernate(一).ppt_第2页
Hibernate(一).ppt_第3页
Hibernate(一).ppt_第4页
Hibernate(一).ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

Hibernate3 6 JPA2 0系列教程 一 Hibernate基础 2010 10 18 对象 关系范式不匹配 2 粒度不匹配 通常情况下 一个Java类很难正好与一张数据库表结构正好匹配 如果勉强这么做的话 要么违背Java面向对象的思想 要么违背数据库的范式约束 假设存在下面这样的一个实体 该如何设计表结构 publicclassUser privateAddressaddress privateAccountaccount 对象 关系范式不匹配 3 继承相关的问题 继承的思想是面向对象的基本特性之一 是Java的一级特性 但是在数据库中没有直接的继承概念 表之间的关系通过外键来约束 对象 关系范式不匹配 4 相同和相等的问题 在Java中存在Same和Equal的问题 但是数据库中只有Equal 没有Same 在两者交互时 这很容易出现问题 对象 关系范式不匹配 5 数据导航与方向性问题 在数据库中 可以通过SQL语句实现任意表的关系映射 且不存在方向性 而在Java中存在严格的数据导航 并且是有方向性的 Java中持久层的解决方案 6 DAO层存在的解决方案 ORM基础 7 ORM基本概念 针对对象和关系的范式不匹配 ORM所完成的工作就是充当两者的调停者 所起的作用与硬件的转接头是一致的 它封装了两者之间转化时的开销 让开发者只需使用面向对象的思想进行所有代码包括持久层开发 而不是开发业务层时使用面向对象的思维方式 而开发DAO层时则开发者还需要切换到面向关系的思维方式去思考问题 ORM基础 8 关于Hibernate性能问题的误区 要使用Hibernate进行开发 需要有超越Hibernate本身的技能 包括较强的数据库调优功底 Hibernate性能可能达不到JDBC 但是不会相差较大 加上缓存和延迟加载策略的支撑 在一些应用上的表现要超越JDBC本身 Hibernate入门 9 Hibernate概况 目前最新版本为Hibernate3 6 0支持JPA2 0使用SLF4J作为日志工具Hibernate程序的依赖包 hibernate3 jarlib required目录下的所有JAR文件lib bytecode javassist或者lib bytecode cglib选其一需要SLF4J JAR相关的JAR文件 Hibernate入门 10 一个简单的Hibernate程序 实战 编写一个简单的Hibernate程序 Hibernate入门 11 Hibernate程序的基本注意事项 Hibernate的持久化类必须要有一个无参构造函数 Hibernate配置文件的DTD声明如下 Hibernate映射文件的DTD声明如下 DOCTYPEhibernate mappingPUBLIC Hibernate HibernateMappingDTD3 0 EN Hibernate入门 12 Hibernate程序的基本注意事项 Hibernate的持久化类必须要有一个无参构造函数 Hibernate配置文件的DTD声明如下 Hibernate映射文件的DTD声明如下 DOCTYPEhibernate mappingPUBLIC Hibernate HibernateMappingDTD3 0 EN Hibernate入门 13 解析SessionFactory的构造过程 SessionFactorysf newConfiguration configure buildSessionFactory 执行newConfiguration 时 Hibernate会在ClassPath根目录下查找hibernate properties文件 若存在 则加载其中所有 hibernate 格式的属性 并设置到Configuration对象上 执行Configuration的configure 无参方法时 Hibernate会在ClassPath根目录下查找名为hibernate cfg xml的配置文件 如果找不到 则抛出异常 如果这里的属性与hibernate properties文件中定义的冲突 则此处的配置将覆盖hibernate properties中的配置 hibernate properties属性文件必须位于ClassPath的根目录下 而且只能是这个名字 否则将不会被Hibernate加载 而hibernate cfg xml没有这个限制 在创建SessionFactory之前 执行Configuration buildSessionFactory之前 你可以在Configuration对象上通过编程的方式设置任何配置属性或者指定映射文件的位置 实际上 可以通过编程的方式设置所有的Hibernate属性 Hibernate入门 14 其他注意事项 在配置文件中 包括hibernate properties和XML配置文件 可以用 形式的占位符来指定属性值 但必须在configure 方法执行之前 即解析配置文件之前 通过设置系统属性的方式为变量设置值 否则将无法解析该属性 设置属性可以使用System setProperty 设置系统属性 也可以在启动程序时通过 D选项为虚拟机设置系统属性 为了使用用户自己提供的连接 可以实现org hibernate connection ConnectionProvider接口 然后使用hibernate connection provider class配置选项来指定自己的实现类 这样就不需要再设置数据库连接参数 Hibernate会从该类中获取Connection对象 对于相同的配置 通常一个应用中只存在一个SessionFactory对象 这是线程安全的重量级对象 而Session对象则是轻量级的非线程安全对象 Hibernate入门 15 生成数据库脚本 通常 我们可以在配置文件中使用 hibernate hbm2ddl auto 指定根据映射文件生成数据库脚本的选项 该选项有如下几个可选值 create 在启动的时候生成数据库脚本 并执行之 create drop 在启动的时候生成数据库脚本 并执行之 在应用结束时删除之前创建的表 validate 在启动的时候校验数据库中相应的表是否符合要求 符合则用之 不符合则抛异常 但是它不会创建新的表 update 在启动的时候 如果数据库存在相应的表并且符合要求则用之 如果不合要求则进行适当修改再用之 如果不存在相应的表 则创建之 它的特点是尽量保证不删除表中原有数据 Hibernate入门 16 Configuration一些加载资源和属性的方法 addResource 增加一个映射文件 addClass 在相应位置寻找并加载CLASSNAME hbm xml映射文件 addAnnotatedClass 增加一个实体类 setProperty 设置Hibernate属性 Hibernate入门 17 为Hibernate指定属性的方式 Configuration setProperty Configuration setProperties ClassPath根目录下的hibernate properties文件ClassPa

温馨提示

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

评论

0/150

提交评论