网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  精通hibernate之映射继承关系一(图)     
  文章作者:未知  文章来源:水木森林  
  查看:59次  录入:管理员--2007-11-17  
 
  在域模型中,类与类之间除了关联关系和聚集关系,还可以存在继承关系,在图14-1所示的域模型中,company类和employee类之间为一对多的双向关联关系(假定不允许雇员同时在多个公司兼职),employee类为抽象类,因此它不能被实例化,它有两个具体的子类:hourlyemployee类和salariedemployee类。由于java只允许一个类最多有一个直接的父类,因此employee类、hourlyemployee类和salariedemployee类构成了一棵继承关系树。
  
精通hibernate之映射继承关系一(图)

  
图14-1 包含继承关系的域模型
  

  在面向对象的范畴中,还存在多态的概念,多态建立在继承关系的基础上。简单地理解,多态是指当一个java应用变量被声明为employee类时,这个变量实际上既可以引用hourlyemployee类的实例,也可以引用salariedemployee类的实例。以下这段程序代码就体现了多态:
  
  list employees= businessservice.findallemployees();
  iterator it=employees.iterator();
  while(it.hasnext()){
  employee e=(employee)it.next();
  if(e instanceof hourlyemployee){
  system.out.println(e.getname()+" "+((hourlyemployee)e).getrate());
  }else
  system.out.println(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类本身的实例。数据库表之间并不存在继承关系,那么如何把域模型的继承关系映射到关系数据模型中呢?本章将介绍以下三种映射方式:
  
  继承关系树的每个具体类对应一个表:关系数据模型完全不支持域模型中的继承关系和多态。
  
  继承关系树的根类对应一个表:对关系数据模型进行非常规设计,在数据库表中加入额外的区分子类型的字段。通过这种方式,可以使关系数据模型支持继承关系和多态。
  
  继承关系树的每个类对应一个表:在关系数据模型中用外键参照关系来表示继承关系。
  
  提示:具体类是指非抽象的类,具体类可以被实例化。hourlyemployee类和salariedemployee类就是具体类。
  
  以上每种映射方式都有利有弊,本章除了介绍每种映射方式的具体步骤,还介绍了它们的适用范围。
 
 
上一篇: 精通hibernate之映射继承关系二(图)    下一篇: 在spring中配置hibernate事务(图)
  相关文档
面向服务架构(soa)的原则 11-17
java服务器 感受开源热潮 11-17
扫描整个网段的多线程程序 11-16
浅析java语言中两种异常的差别 11-16
Java中static、this、super、final用法 08-06
用rmi实现基于java的分布式计算 11-17
不使用function计算给定两个日期之间的工作日个数 11-17
aspire和tomcat使用层次数据集 11-16
java基础:如何建立java zip压缩文件 11-16
java技巧:hello world ant 11-17
为网络做准备j2ee部署中的下一个冲击波(图) 11-17
jsp/servlet/jsf:提升jsp应用程序效率 01-11
java程序把word文档直接转换成html文件 11-16
使用ejb 3.0简化企业级java开发一 11-17
运用反射实现ejb动态委派 11-17
使用多线程技术让你的swing及时响应各类事件 11-16
接收键盘的输入并原样输出到屏幕上 11-17
j2ee基础之组件开发:看消息驱动的ejb 12-11
使用ejbframe轻松编写ejb组件 11-16
if...else 语句 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息