专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » hibernate映射:浅析Hibernate继承关系树的 3种映射方式 »正文

hibernate映射:浅析Hibernate继承关系树的 3种映射方式

来源: 发布时间:星期一, 2009年9月28日 浏览:11次 评论:0
  在向大家详细介绍Hibernate继承关系树 3种映射方式的前首先让大家了解下Employee类为抽象类然后全面介绍

  在域模型中类和类的间除了关联关系和聚集关系还可以存在继承关系Company类和Employee类的间为对多双向关联关系(假定不允许雇员同时在多个公司兼职)Employee类为抽象类因此它不能被例子化它有两个具体子类:HourlyEmployee类和 SalariedEmployee类由于Java只允许个类最多有个直接父类因此Employee类、HourlyEmployee类和 SalariedEmployee类构成了棵继承关系树

  在面向对象范畴中还存在多态概念多态建立在继承关系基础上简单地理解多态是指当个Java应用变量被声明为Employee类时这个变量实际上既可以引用HourlyEmployee类例子也可以引用SalariedEmployee类例子以下这段代码就体现了多态:

List employees= businessService.findAllEmployees;  
Iterator it=employees.iterator;  
while(it.hasNext){  
Employee e=(Employee)it.next;  
(e instanceof HourlyEmployee){  
.out.prln(e.getName+" "+((HourlyEmployee)e).getRate);  
}  
.out.prln(e.getName+" "+((SalariedEmployee)e).getSalary);  
}  


  BusinessService类findAllEmployees()思路方法通过Hibernate API从数据库中检索出所有Employee对象findAllEmployees()思路方法返回集合既包含HourlyEmployee类例子也包含SalariedEmployee类例子这种查询被称为多态查询以上中变量e被声明为Employee类型它实际上既可能引用 HourlyEmployee类例子也可能引用SalariedEmployee类例子

  此外从Company类到Employee类为多态关联Company类employees集合中可以包含 HourlyEmployee类和SalariedEmployee类例子从Employee类到Company类不是多态关联 Employee类company属性只会引用Company类本身例子数据库表的间并不存在继承关系那么如何把域模型继承关系映射到关系数据模型中呢?

  ◆Hibernate继承关系树每个具体类对应个表:关系数据模型完全不支持域模型中继承关系和多态

  ◆Hibernate继承关系树根类对应个表:对关系数据模型进行非常规设计在数据库表中加入额外区分子类型字段通过这种方式可以使关系数据模型支持继承关系和多态

  ◆Hibernate继承关系树每个类对应个表:在关系数据模型中用外键参照关系来表示继承关系

  提示:具体类是指非抽象具体类可以被例子化HourlyEmployee类和SalariedEmployee类就是具体类

  以上每种映射方式都有利有弊本章只介绍Hibernate继承关系树 3种映射方式

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: