a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 125|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
在域模子中,类与类之间除了联系关系关系和聚积关系,还可以存在继续关系,在图14-1所示的域模子中,Company类和Employee类之间为一对多的双向联系关系关系(假定不承诺雇员同时在多个公司兼职),Employee类为抽象类,是以它不能被实例化,它有两个具体的子类:HourlyEmployee类和SalariedEmployee类。因为Java只承诺一个类最多有一个直接的父类,是以Employee类、HourlyEmployee类和SalariedEmployee类组成了一棵继续关系树。
  z' E9 s6 E+ e: P! Q  在面向对象典型乘鱿脯还存在多态的概念,多态成立在继续关系的基本上。简单地舆解,多态是指当一个Java应用变量被声明为Employee类时,这个变量现实上既可以引用HourlyEmployee类的实例,也可以引用SalariedEmployee类的实例。以下这段轨范代码就浮现了多态:2 Y/ i8 g$ x0 W7 J0 e
  BusinessService类的findAllEmployees()体例经由过程Hibernate API年夜数据库中检索出所有Employee对象。findAllEmployees()体例返回的集结既包含HourlyEmployee类的实例,也包含SalariedEmployee类的实例,这种发芽被称为多态发芽。以上轨范中变量e被声明为Employee类型,它现实上既可能引用HourlyEmployee类的实例,也可能引用SalariedEmployee类的实例。
- n1 r! ]* r1 u# z, T0 W  此外,年夜Company类到Employee类为多态联系关系,因为Company类的employees集结中可以包含HourlyEmployee类和SalariedEmployee类的实例。年夜Employee类到Company类不是多态联系关系,因为Employee类的company属性只会引用Company类自己的实例。数据库表之间并不存在继续关系,那么若何把域模子的继续关系映射到关系数据模子中呢?本章将介绍以下三种映射体例:
* m/ N0 _( a) V+ j  继续关系树的每个具体类对应一个表:关系数据模子完全不撑持域模子中的继续关系和多态。
! m# z6 L6 K0 ~; q3 G  s  继续关系树的根类对应一个表:对关系数据模子进行很是规设计,在数据库表中插手额外的区分子类型的字段。经由过程这种体例,可以使关系数据模子撑持继续关系和多态。
( e5 _  Z* I# I8 R9 q8 ?4 r  继续关系树的每个类对应一个表:在关系数据模子赌暌姑外键参照关系来暗示继续关系。
) @( M$ [, n5 S/ g8 k  提醒:具体类是指风度象的类,具体类可以被实例化。HourlyEmployee类和SalariedEmployee类就是具体类。
0 v" d7 w; M- ~  以膳缦憧种映射体例都有利有弊,本章除了介绍每种映射体例的具体轨范,还介绍了它们的合用规模。
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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