首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有继承的类的Hibernate映射

Hibernate是一个开源的对象关系映射(ORM)框架,它提供了将Java对象映射到关系数据库中的功能。具有继承的类的Hibernate映射是指在Hibernate中如何映射具有继承关系的类。

在Hibernate中,有三种常见的继承映射策略:单表继承、每类一张表和每个具体类一张表。

  1. 单表继承(Single Table Inheritance):将所有继承关系的类映射到同一张数据库表中。通过在表中添加一个表示类类型的列来区分不同的子类。这种策略简单且易于实现,但当继承层次较深或类之间的差异较大时,表中可能会出现大量的空值。
  2. 每类一张表(Table Per Class):每个具体类都映射到一个独立的数据库表中,包括父类和子类。这种策略可以保持表的结构简洁,但在查询时需要进行多表连接操作,性能可能会受到影响。
  3. 每个具体类一张表(Table Per Concrete Class):每个具体类都映射到一个独立的数据库表中,但不包括父类。这种策略可以保持表的结构简洁,同时查询性能也比每类一张表策略更好。但在查询整个继承层次时,需要进行多个表的联合查询。

根据具体的业务需求和性能要求,选择适合的继承映射策略是很重要的。

腾讯云提供了云数据库MySQL、云数据库MariaDB和云数据库PostgreSQL等产品,可以用于存储Hibernate映射的数据。您可以根据具体需求选择适合的数据库产品。

更多关于腾讯云数据库产品的信息,请访问:腾讯云数据库

请注意,以上答案仅供参考,具体的Hibernate映射策略选择和数据库产品选择应根据实际情况进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Hibernate继承映射

对象模型示例: 继承映射实现方式有以下三种: (一)每棵继承树一张表 (二)每个一张表 (三)每个子类一张表 (一)每棵继承树一张表 关系模型如下: 映射文件如下: 说明: 因为继承树肯定是对应多个,要把多个信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个。...关于鉴别值在存储时候hibernate会自动存储,在加载时候会根据鉴别值取得相关对象 (二)每个一张表 关系模型如下: 映射文件如下: <hibernate-mapping package="com.nnngu...每个子类对应一张表,而且这个表信息是完备,即包含了所有从父继承下来属性映射字段(这就是它跟joined-subclass不同之处,joined-subclass定义子类表,只包含子类特有属性映射字段...这个时候,虽然在union-subclass里面定义只有子类属性,但是因为它继承了父,所以,不需要定义其它属性,在映射到数据库表时候,依然包含了父所有属性映射字段。

99540
  • Hibernate映射继承关系

    一、Hibernate继承关系在面向对象编程中,继承是指在一个基础上扩展新,扩展后具有所有属性和方法,并可以添加新属性和方法。...Hibernate实体是指对应于数据库中一张表Java继承关系映射将子类和父属性映射到同一张表中或者分别映射到不同表中。...在Hibernate中,继承关系映射方式主要有三种,分别是单表继承、多表继承和一对一继承。单表继承在单表继承中,继承关系子类和父使用同一个表。...一对一继承一对一继承是指每个实体映射到一个表中,同时每个表之间具有一对一关系映射。在这种情形中,父子之间并不会共享某些字段,因此,嵌套不是必须。...二、单表继承映射示例在本文中,我们将从单表继承开始,展示如何使用Hibernate实现继承关系映射。下面是两个Java,我们将使用这两个来演示单表继承映射

    51830

    初识Hibernate继承映射

    例如: 如图,student表和teacher表共同具有id,name,age等字段,而我们继承映射就是这样一个思想,抽象出这些共有的字段为一张父表,让子表对其进行继承,这样就可以大大降低我们实体代码冗余性...Hibernate支持以下三种数据表生成策略: 每个分层结构一张表 每个子类一张表 每个具体一张表 一、每个分层结构一张表      对于这种数据表生成策略,最终Hibernate会在数据库中生成一张数据表...那在我们取数据时候,Hibernate该如何区分当前记录对应是哪个实体呢?...,union-subclass告诉Hibernate当前配置实体是person子类,并用table属性指定对应数据库表名。...至此,有关继承映射三个策略已经介绍结束,总结不到之处,望指出。

    81280

    【SSH快速进阶】——Hibernate继承映射:每个映射一张表

    https://blog.csdn.net/huyuyang6688/article/details/50689003   上文说了每棵继承映射一张表,本文继续描述让每个映射一张表配置...上图中Pig和Bird继承Animal,要让每个映射一张表,就是让着三个都分别映射一张表,但同时这三张表也跟对应三个类似的,有继承关系,在父对应表中,实际上会存储所有子类对应记录,如下表所示...  配置映射文件时,父还用标签来定义即可;用标签定义两个子类, 标签内必须有key标签,表示子类对应表中记录主键,这个主键与父表中记录主键一一对应...所以对对象操作同上篇文章《【SSH快速进阶】——Hibernate继承映射:每棵继承映射一张表》中测试一致。...---- 【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate继承映射:每个映射一张表》】

    39830

    【SSH快速进阶】——Hibernate继承映射:每个具体映射一张表

    上图中Pig和Bird继承Animal,要让每个具体映射一张表,就是只映射Pig和Bird,如下表所示:                        (表 1) ?   ...  配置映射文件时,父还用标签来定义即可;用标签定义两个子类,且每个对应信息是完全,包含了所有从父继承下来属性。...《【SSH快速进阶】——Hibernate继承映射:每棵继承映射一张表》中测试一致。   ...【Hibernate继承映射综合分析】   如果系统需要经常进行查操作且子类数量较多,则建议用第一种方案,即每棵生成树映射一张表,这也是最常用方法,效率较高。   ...---- 【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate继承映射:每个具体映射一张表》】

    44140

    【SSH快速进阶】——Hibernate继承映射:每棵继承映射一张表

    ”,之间有继承关系,Hibernate中也对这种继承关系提供了映射封装。   ...Hibernate继承映射提供了三种策略   1、每棵继承树使用一张表   2、每个子类使用一张表   3、每个具体使用一张表   本文对第一种策略进行说明。...上图中Pig和Bird继承Animal,每棵继承树对应一张表,即在同一棵继承树中,所有的对象信息(记录)共同存放到一张表中,要判断某条记录属于哪个对象,需要在表中添加一个字段进行区分(比如下表...插入父(Animal)时,默认把名当做type了 查询测试 ---- load查询   根据配置,鉴别值(表中type)在存储时候会自动存储,在加载时候也会根据鉴别值映射取得相应对象。...---- 【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate继承映射:每棵继承映射一张表》】

    39120

    Hibernate关联映射

    Hibernate在实现ORM功能时候主要用到文件有:映射(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),它们各自作用如下: 映射...(*.java):它是描述数据库表结构,表中字段在中被描述成属性,将来就可以实现把表中记录映射成为该类对象了。...映射文件(*.hbm.xml):它是指定数据库表和映射之间关系,包括映射和数据库表对应关系、表字段和类属性对应关系。...当然还可以把映射地址映射信息放在这里。...: 主键关联:即让两个对象具有相同主键值,以表明它们之间一一对应关系;数据库表不会有额外字段来维护它们之间关系,仅通过表主键来关联。

    1.4K60

    HibernateHibernate映射关系「建议收藏」

    Hibernate映射基本结构 Hibernate在实现ORM功能时候主要用到文件有:映射(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*...映射(*.java):它是描述数据库表结构,表中字段在中被描述成属性,将来就可以实现把表中记录映射成为该类对象了。...映射文件(*.hbm.xml):它是指定数据库表和映射之间关系,包括映射和数据库表对应关系、表字段和类属性类型对应关系以及表字段和类属性名称对应关系等。...当然还可以把映射地址映射信息放在这里。.../> Hibernate实现关系映射 上面的代码就是基本映射体现,接下来会继续介绍常用关系映射

    71510

    Hibernate实体中为什么要继承Serializable?

    hibernate有二级缓存,缓存会将对象写进硬盘,就必须序列化,以及兼容对象在网络中传输 等等。...没有实现此接口将不能使它们任一状态被序列化或逆序列化。序列化所有子类本身都是可序列化。这个序列化接口没有任何方法和域,仅用于标识序列化语意。...为了对象序列化而需要继承接口也只是一个象征性接口而已,也就是说继承这个接口说明这个对象可以 被序列化了,没有其他目的。...将二级缓存中内容持久化保存下来,便于恢复缓存信息,hibernate缓存机制通过使用序列化,断定应该是基于序列化缓存,如没有 serializable接口,在序列化时,使用objectOutputStream...Hibernate并不要求持久化必须实现java.io.Serializable接口,但是对于采用分布式结构Java应用,当Java对象在不同进程节点之间传输时,这个对象所属必须实现Serializable

    1.2K30

    Hibernate框架学习之注解映射实体

    中添加实体 //这样hibernate就会根据配置文件去查找该实体并做映射操作 这就是映射一个最简单实体所用到最基本注解...该注解有很多属性: name:指定该属性映射到数据表中对应名称 nullable:指定该属性映射数据表中列是否可以为null,默认为true unique:指定该属性映射到数据表中列是否具有唯一约束...联合主键映射可以通过多个@Id进行修饰即可,但要求该实体必须继承 java.io.Serializable并尽可能重写Object两个方法,hashCode和equals,因为多个属性唯一确定一条记录...总的来说,一旦hibernate发现实体中有集合类型属性需要映射,那么就会为集合属性单独映射出一张表,该表至少有两个字段,一个字段依赖于主表id字段值,在新表中相同该字段值记录共同组合成为实体集合属性值...组件每个属性都被映射到userinfo表中了。当我们通过实体实例向数据表中插入数据时候,hibernate会将组件实例拆分出来各个属性插入到对应表字段。

    3.1K90
    领券