a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 112|回复: 0

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

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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