在Hibernate中,POJO实体类也可以有继承关系。
第一种继承关系为:
Table per concrete class 表与子类独立的一对一关系。
数据库中有3张表,商品表,书本表,影碟表。其中3个表对应3个实体类。3张表没有主外键关系,都有各自的主键,这样每个实体都有各自独立的hbm文件。因为商品表与书本表和影碟表有相同的字段,所以可以设计书本类和影碟类都继承商品类。
这种继承关系比较少见,因为数据库表很少这样设计,也欠缺灵活性。
第二种继承关系为:
Table per subclass 每个子类与父类都对应一张表,但是子类与父类之间有共享的字段,表之间有主外键关系。子表的主键参照父表的主键。
与第一种关系的不同地方在于3个实体类只需要使用一个hbm文件。
TItem.java
TBook.java
TDVD.java
Titem.hbm.xml
第三种继承关系为:
Table per class hierarchy
子类和父类对应一张表。
数据库中实际只存在一张表,表中有类别字段用于区分不同的商品。将每一个类别映射为每个子类实体。
该种关系的POJO类定义与第二种无异,主要区别在于hbm文件
Titem.hbm.xml