1. 将整个继承树映射成一张表,对象模型如下:
当我们需要把整棵继承树映射成一张表时,那么这张表应该包含继承树中的所有属性,其次为了区分每个子类,我们应该还要包含一个标识字段,所以表中属性应该是继承树中的所有属性外加一个区分子类的标识字段。
java文件:
hbm.xml文件:
数据库表:
测试:
也可以通过父类来加载子类:
测试代码:
数据库数据:
加载结果:
注意:此处根据主键将第2条数据“小鸟”加载上来,但是我们使用的是父类,怎么会知道是子类小鸟呢,这就是hibernate在加载数据的时候根据hbm.xml文件中的鉴别器<discriminator>区分的。
2. 每个类(包括父类)映射成一张表,对象模型如上不变
既然对象模型不变,那么对象、操作代码应该都是不需要改变的,因为只是改变了存储模型,所以只要更改映射文件即可,如下
hbm.xml:
数据库表:
测试代码:
数据库数据:
3. 每个子类映射成一个表,对象模型依然不用改,只要修改存储模型
hbm.xml文件