a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 132|回复: 0

[专业语言] JAVA认证:教你精通Hibernate之映射继续关系(3)

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
 在域模子中,类与类之间除了联系关系关系和聚积关系,还可以存在继续关系,在图14-1所示的域模子中,Company类和Employee类之间为一对多的双向联系关系关系(假定不承诺雇员同时在多个公司兼职),Employee类为抽象类,是以它不能被实例化,它有两个具体的子类:HourlyEmployee类和SalariedEmployee类。因为Java只承诺一个类最多有一个直接的父类,是以Employee类、HourlyEmployee类和SalariedEmployee类组成了一棵继续关系树。
( K  `/ ^9 U; D  在面向对象典型乘鱿脯还存在多态的概念,多态成立在继续关系的基本上。简单地舆解,多态是指当一个Java应用变量被声明为Employee类时,这个变量现实上既可以引用HourlyEmployee类的实例,也可以引用SalariedEmployee类的实例。以下这段轨范代码就浮现了多态:7 k" d2 a" }0 t
  BusinessService类的findAllEmployees()体例经由过程Hibernate API年夜数据库中检索出所有Employee对象。findAllEmployees()体例返回的集结既包含HourlyEmployee类的实例,也包含SalariedEmployee类的实例,这种发芽被称为多态发芽。以上轨范中变量e被声明为Employee类型,它现实上既可能引用HourlyEmployee类的实例,也可能引用SalariedEmployee类的实例。4 N/ y8 R+ ]5 z  B* F1 O& u/ w* g
  此外,年夜Company类到Employee类为多态联系关系,因为Company类的employees集结中可以包含HourlyEmployee类和SalariedEmployee类的实例。年夜Employee类到Company类不是多态联系关系,因为Employee类的company属性只会引用Company类自己的实例。数据库表之间并不存在继续关系,那么若何把域模子的继续关系映射到关系数据模子中呢?本章将介绍以下三种映射体例:  {$ h8 e2 ]: B$ n' j/ p+ A/ K
  继续关系树的每个具体类对应一个表:关系数据模子完全不撑持域模子中的继续关系和多态。5 R6 C% N3 X0 D& P
  继续关系树的根类对应一个表:对关系数据模子进行很是规设计,在数据库表中插手额外的区分子类型的字段。经由过程这种体例,可以使关系数据模子撑持继续关系和多态。
/ d& u- B" m+ |" H: y  继续关系树的每个类对应一个表:在关系数据模子赌暌姑外键参照关系来暗示继续关系。( R6 z+ I% f! i$ n
  提醒:具体类是指风度象的类,具体类可以被实例化。HourlyEmployee类和SalariedEmployee类就是具体类。# D  t. z! s, \% T+ ^! F% \
  以膳缦憧种映射体例都有利有弊,本章除了介绍每种映射体例的具体轨范,还介绍了它们的合用规模。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-9-28 02:21 , Processed in 0.175717 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表