a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 111|回复: 0

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 16:43 , Processed in 0.672348 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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