动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > Java教程 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

精通Hibernate之映射继承关系一(图)


发表日期:2008-1-5



  在域模型中,类与类之间除了关联关系和聚集关系,还可以存在继续关系,在图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类就是具体类。
  
  以上每种映射方式都有利有弊,本章除了介绍每种映射方式的具体步骤,还介绍了它们的适用范围。
关注此文的读者还看过:
·2012-5-21 17:14:17 Java动画编程基础第三部分
·2012-5-21 17:13:48 Java语言中Timer类的简洁用法(二)
·2012-5-21 17:13:45 使用AWT 将Graphics对象转换为Image对象
·2012-5-21 17:13:38 小小计算器
·2012-5-21 17:13:19 漫谈Java平台上的CRM系统
·2012-5-21 17:13:14 在eclipse中使用jetty
·2012-5-21 17:13:03 在Eclipse中使用JUnit
·2012-5-21 17:13:01 Java 5.0和.NET 2.0 在较量中携手前行
·2012-5-21 17:12:25 用SAAJ1.2发送接收二进制Web服务内容(二)
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
项目外包信息
·汽车配件网站制作 50000元
·整站SEO优化
·课件门户网程序
·求长期合作网站设计制作高手
·公司网站重新改版 8000元
·asp企业网站小改动
·网站flash片头
·文化传播公司网站设计稿
·UI界面设计
·产品外观改版设计 15000元
·照明灯具网站设计 10000元
·求长期合作网站设计制作高手
·做B2C网站 20000元
·Android或QT软硬件平台设计(工
·网站首页FLASH
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<Java教程>的内容


网络编程文章分类
ASP教程
ASP实例
ASP技巧
ASP文摘
PHP教程
PHP技巧
PHP实例
PHP文摘
JSP教程
JSP技巧
JSP实例
JSP文摘
ASP.NET教程
ASP.NET技巧
ASP.NET实例
ASP.NET应用
xml教程
xsl教程
xml技巧
C#教程
C#应用
Delphi教程
Perl教程
Shell教程
Ajax教程
Visual Basic教程
Java教程
J2EE/J2ME教程
C/C++教程
移动解决方案
移动短信技术
移动行业动态
软件工程
WordPress
Android开发
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索|酒店预订|机票预订
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号