第2篇 对象关系映射.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate ORM 最佳实践 第2章 对象关系映射 回顾 介绍应用程序分层体系结构 ORM技术背景(数据库操作、持久化、JDBC比较及ORM工具) Hibernate的环境配置及入门程序编写 目标 了解Hibernate的对象标识符 学习Hibernate的主键生成机制 掌握Hibernate的映射类型 掌握对象继承关系映射 掌握关联关系映射 对象标识符 Hibernate使用OID(Object Identifier)来标识对象的唯一性,它是关系数据库中主键在Java对象模型中的等价物 重写对象equals和hashCode方法 Hibernate对主键分类 两种分类: ①单个主键、复合主键 ②自然(业务)主键、代理(逻辑)主键 Hibernate内置对象标识符生成策略 主键映射 单个主键映射 复合主键映射 示例 Hibernate的映射类型 Hibernate连接Java对象和数据库表,在映射表里,使用property及其他属性标签时,type属性既不是Java数据类型,也不是SQL数据类型,而是使用Hibernate的映射类型 映射类型分为:基本映射类型和自定义映射类型 继承关系映射 Hibernate提供3种继承持久化策略: ①每个子类一张表 ②每个类一张表 ③共享一个数据表 每个子类一个数据表 将父类属性分别加入到子类中去,分别对子类设计映射文件,针对子类对象进行操作,不能使用多态进行ORM操作。 每个类一个数据表 在父类映射表中利用标签joined-subclass定义其子类的映射 示例 代码 共享一个数据表 只定义一个父类表,在父表中包括子类属性对应的字段,同时增加一个区分子类类型的字段。在父类映射表中,定义标签discriminator来描述区分子类类型的字段,标签subclass定义子类的映射。 示例 代码 关联关系映射 使一个类知道另一个类的存在,表现在数据库中,通常用一个外键字段关联到另一张表。关联关系是有方向的,可以是单向,或双向的。 Hibernate提供下列检索策略: ①一对一关联 one-to-one ②一对多、多对一关联 one-to-many many-to-one ③多对多关联 many-to-many ④组件映射 component 关系映射(一) 多对一关系/一对多关系 它们是相对的关系,在关系映射表中使用标签many-to-one或one-to-many来映射关系. 代码 映射文件 代码 配置 问题 双向多对一关联 代码 关系映射(二) 一对一关联 当对象之间只存在唯一的一对一关系时,在映射表中使用one-to-one元素来定义映射关系 代码 映射文件 代码 关系映射(三) 多对多关联 借助中间表来完成多对多关联关系信息的保存,在映射文件中使用many-to-many标签 代码 映射文件 代码 总结 了解Hibernate的对象标识符 学习Hibernate的主键生成机制 掌握Hibernate的映射类型 掌握对象继承关系映射 掌握关联关系映射 教师-课程关系 teacher TC sise_course teacherID(PK) tname cid(PK) cname t_id+c_id(PK,FK) 中间表 false false Hibernate ORM Hibernate ORM 三个不同的OID Hibernate能够识别 三个不同的primary Key Hibernate根据对象标识符来维持Java对象和数据库表中记录的对应关系 问题 数据库表中每条记录PK值不同的,但是在Java中靠对象的内 存地址来识别的? Student s1=new Student(100,”TOM”,22); Student s2=new Student(100,“TOM”,22); Student s3=s1; System.out.println(s1==s2); System.out.println(s1==s3); false true 重写equals()与hashCode()方法,不仅比较对象的地址,同时比较对象的具体内容 Hibernate区分对象实体,是与数据库 记录一致的。 class name=“Student” table=“student” id name=“sid” column=“sno” type=“string” generator class=“assigned”/ /id … … /class 把组成主键的属性组成一个 类. 在映射表中:composite-id

您可能关注的文档

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档