zoukankan      html  css  js  c++  java
  • 【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来区分是哪个子类。单表继承尽管是多写了几个实体类,可是类和类之间的层次结构清晰,而且更具有面向对象的优势。

    相比而言,比我们设计的用一个状态字段去维护,操作起来就更方便了。

     

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

  • 相关阅读:
    Linux imooc learning
    有用的生活有关的website
    ps -ef | grep java
    2.3. Configuring sudo Access-RedHat
    How to change java version in Linux
    文档记录工具
    Jmeter 学习imooc
    Linux 用户管理
    Builder模式(设计模式)
    Prototype模式(设计模式)
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6911806.html
Copyright © 2011-2022 走看看