【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来区分是哪个子类。单表继承虽然是多写了几个实体类,但是类和类之间的层次结构清晰,并且更具有面向对象的优势。相比而言,比我们设计的用一个状态字段去维护,操作起来就更方便了。

 

       有利必有弊,我们要权衡一下,并不是所有的情况下实体继承都是适用的。但是也不能不考虑实体继承,如果是大量的数据库表的话,访问数据时将存在大量的关联表操作,效率低。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值