知识大全 精通Hibernate之映射继承关系八

Posted

篇首语:笛里谁知壮士心,沙头空照征人骨。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 精通Hibernate之映射继承关系八相关的知识,希望对你有一定的参考价值。

精通Hibernate之映射继承关系八  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  由于关系数据模型不允许一个表的外键同时参照两个表的主键 因此无法对TABLE_D表的A_ID字段定义外键参照约束 而应该通过其他方式 如触发器 来保证A_ID字段的参照完整性 由于TABLE_D表的A_ID字段既可能参照TABLE_B表的ID主键 也可能参照TABLE_C表的ID主键 要求TABLE_B表和TALBE_C表的ID主键具有相同的SQL类型     在ClassD hbm xml文件中 用元素来映射ClassD的a属性     <any name= a   meta type= string   id type= long   cascade= save update >  <meta value value= B class= ClassB />  <meta value value= C class= ClassC />  <column name= A_TYPE />  <column name= A_ID />  </any>    元素的meta type属性指定TABLE_D中A_TYPE字段的类型 id type属性指定TABLE_D中A_ID字段的类型 子元素设定A_TYPE字段的可选值 在本例中 如果A_TYPE字段取值为 B 表示为ClassB的对象 A_ID字段参照TABLE_B表中的ID主键 如果A_TYPE字段取值为 C 表示为ClassC的对象 A_ID字段参照TABLE_C表中的ID主键 子元素指定TABLE_D表中的A_TYPE字段和A_ID字段 必须先指定A_TYPE字段 再指定A_ID字段      小结    本章介绍了映射继承关系的三种方式     继承关系树的每个具体类对应一个表 在具体类对应的表中 不仅包含和具体类的属性对应的字段 还包含和具体类的父类的属性对应的字段 这种映射方式不支持多态关联和多态查询     继承关系树的根类对应一个表 在根类对应的表中 不仅包含和根类的属性对应的字段 还包含和所有子类的属性对应的字段     这种映射方式支持多态关联和多态查询 并且能获得最佳查询性能 缺点是需要对关系数据模型进行非常规设计 在数据库表中加入额外的区分各个子类的字段 此外 不能为所有子类的属性对应的字段定义not null约束     继承关系树的每个类对应一个表 在每个类对应的表中只需包含和这个类本身的属性对应的字段 子类对应的表参照父类对应的表     这种映射方式支持多态关联和多态查询 而且符合关系数据模型的常规设计规则 缺点是它的查询性能不如第二种映射方式 在这种映射方式下 必须通过表的内连接或左外连接来实现多态查询和多态关联     在默认情况下 对于简单的继承关系树可以采用根类对应一个表的映射方式 如果必须保证关系数据模型的数据完整性 可以采用每个类对应一个表的映射方式 对于复杂的继承关系树 可以将它分解为几棵子树 对每棵子树采用不同的映射方式     当然 在设计域模型时 应该尽量避免设计过分复杂的继承关系 这不仅会增加把域模型映射到关系数据模型的难度 而且也会增加在Java程序代码中操纵持久化对象的复杂度     对于不同的映射方式 必须创建不同的关系数据模型和映射文件 但是域模型是一样的 域模型中的持久化类的实现也都一样     只要具备Java编程基础知识 就能创建具有继承关系的持久化类 因此本章没有详细介绍这些持久化类的创建过程 在此仅提醒一点 子类的完整构造方法不仅负责初始化子类本身的属性 还应该负责初始化从父类中继承的属性 例如以下是HourlyEmployee类的构造方法     public class HourlyEmployee extends Employee  private double rate;    /** 完整构造方法*/  public HourlyEmployee(String name double rate Company pany)   super(name pany);  this rate=rate;      /** 默认构造方法*/  public HourlyEmployee()   ……      Hibernate只会访问持久化类的默认构造方法 永远不会访问其他形式的构造方法 提供以上形式的完整构造方法 主要是为Java应用的编程提供方便 cha138/Article/program/Java/ky/201311/28491

相关参考

知识大全 精通Hibernate之映射继承关系(一)

精通Hibernate之映射继承关系(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在域模

知识大全 精通Hibernate之映射继承关系三

精通Hibernate之映射继承关系三  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <h

知识大全 精通Hibernate之映射继承关系二(图)

精通Hibernate之映射继承关系二(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  把每

知识大全 精通Hibernate之映射继承关系四(图)

精通Hibernate之映射继承关系四(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这种

知识大全 精通Hibernate之映射继承关系七(图)

精通Hibernate之映射继承关系七(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Co

知识大全 hibernate关系映射

  一对象关系映射基础  对象间的基本关系  首先我简要阐明一下对象之间的基本关系在这以后UML的课程中也会深入的学习对象具有的四种基本关系  关联关系关联关系在设计模式中是被提倡优先使用于继承关系的

知识大全 Hibernate各种映射关系总结

Hibernate各种映射关系总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多对一  第一

知识大全 Hibernate ORM 对象-关系 映射

HibernateORM对象-关系映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hiber

知识大全 映射对象标识符

精通Hibernate:映射对象标识符  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java语

知识大全 Hibernate的继承关系

Hibernate的继承关系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一每个子类对应一个数据表