【Hibernate学习】 ——ORM(四)再次认识实体继承
在信用办时,做失信、守信、黑名单这一块的时候,先把原来的需求看了看,紧接着就开始设计实体,这一块大部分都是相同的信息,所以就设计了一个实体,并且用一个状态标识出来是失信、守信还是黑名单。
在之后的修改中,特别不方便,每次修改这一块,这都要出问题。也就是说每一次都需要自己的实体去维护自己的状态。但是如果我们把这个状态抽出来,就变成了我们公共的去维护这些“状态”,这样就大大简化了我们的工作,我们只需要对基本表的信息进行维护就可以了。这就是单表继承。
代码:
父类:
@Entity(name="Company") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING) public class Company { 基本字段 }
@Entity @DiscriminatorValue(value="OnCreaditCompany") public class OnCreaditCompany extends Company { }
单表继承,是一张大表中,包括了父类,子类的所有属性,通过Type来区分是哪个子类。单表继承虽然是多写了几个实体类,但是类和类之间的层次结构清晰,并且更具有面向对象的优势。相比而言,比我们设计的用一个状态字段去维护,操作起来就更方便了。
有利必有弊,我们要权衡一下,并不是所有的情况下实体继承都是适用的。但是也不能不考虑实体继承,如果是大量的数据库表的话,访问数据时将存在大量的关联表操作,效率低。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。