Hibernate学习笔记:继承映射之每个类继承结构一张表

对象之间除了拥有,使用的关系,还有继承关系。Hibernate在作继承关系映射的时候有多种做法,今天学习第一种:每个类继承结构一张表,也就是说父类和子类在一张表中, 通过额外字段区分子类型。为了演示这种映射关系的做法,本文引入了四个对象,Animal, Monkey, Tiger,Zoo. MonkeyTiger继承自Animal. 每个Animal都归属一个动物园Zoo,关系表animal(id, name, zoo_id,age, kind, animal_type), 其中animal_type用来标识子类是Tiger还是Monkey, agemonkey的专有属性, kindtiger的专有属性。 关系表zoo(id, name, address).

Zoo.hbm.xml:

只有父类Animal有映射文件, 子类的配置通过subclass来标识。

Animal.hbm.xml:

dao和测试用例:

在向数据库中填充测试数据的时候注意animal_type的数据,本例用"MONKEY"和"TIGER"来标识子类, 所以最好对这个字段有约束。

这种做法的优点是:简单, 增加子类方便,数据存储快(因为在一张表中),方便制作报表;

这种做法的优点是:耦合性高; 潜在的数据空间浪费。

需要注意的是 子类专有的字段不能有非空约束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值