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

多子类Hibernate映射及最小子类超父数据的获取

多子类Hibernate映射是指在Hibernate中使用继承关系映射多个子类的数据表结构。最小子类超父数据的获取是指在查询父类数据时,同时获取其最小子类的数据。

在Hibernate中,多子类映射可以通过三种方式实现:单表继承、具体表继承和类表继承。

  1. 单表继承(Single Table Inheritance):所有子类的数据都存储在同一个表中,通过一个类型字段来区分不同的子类。优势是简单、高效,适用于子类之间的属性差异较小的情况。推荐的腾讯云相关产品是云数据库TDSQL。
  2. 具体表继承(Concrete Table Inheritance):每个子类都对应一个独立的数据表,表结构包含了子类和父类的所有属性。优势是查询效率高,适用于子类之间的属性差异较大的情况。推荐的腾讯云相关产品是云数据库TDSQL。
  3. 类表继承(Class Table Inheritance):每个子类都对应一个独立的数据表,同时有一个公共的父类表,父类表中包含了所有子类的公共属性。优势是数据表结构清晰,适用于子类之间的属性差异较大的情况。推荐的腾讯云相关产品是云数据库TDSQL。

最小子类超父数据的获取可以通过Hibernate的多态查询实现。多态查询是指根据父类查询数据,同时获取其最小子类的数据。在Hibernate中,可以使用HQL(Hibernate Query Language)或Criteria API进行多态查询。推荐的腾讯云相关产品是云数据库TDSQL。

总结: 多子类Hibernate映射是通过单表继承、具体表继承或类表继承实现的,用于映射多个子类的数据表结构。最小子类超父数据的获取可以通过Hibernate的多态查询实现。推荐的腾讯云相关产品是云数据库TDSQL。

更多关于Hibernate映射的详细信息,请参考腾讯云官方文档:

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

相关·内容

hibernate笔记(三)

继承映射 需求:猫、猴子、动物。 所有子类映射到一张表 (1张表) 什么情况用? 子类,且子类较为简单,即只有个别属性! 好处:因为使用一个映射文件, 减少了映射文件个数。...缺点:(不符合数据库设计原则) 一个映射文件: Animal.hbm.xml (如何区分是哪个子类信息?)...每个类映射一张表(3张表) 数据库 T_anmal (存储类信息) 1 大花猫 T_cat (引用主键) 1 抓小老鼠 T_monkey(引用主键) Javabean...一个映射文件,存储所有的子类子类类都对应表; 缺点:表结构比较复杂,插入一条子类信息,需要用2条sql: 往类插入、往子类插入!...总结: 所有的子类都写到一个映射文件; 类不对应表; 每个子类对应一张表 Hibernate映射对一 一对 一对一 (对一特殊应用) 组件 继承

60840

Hibernate映射】续篇

这里写图片描述 ---- 把所有子类映射成一张表 前面我们采用是:每个子类都需要写成一个配置文件,映射成一张表… 如果子类结构很简单,只比几个属性。...这里写图片描述 ---- (推荐)每个子类映射一张表, 类不对应表(2张表) 使用过了一张表保存所有子类数据,这不符合数据库设计规范 每个子类类都拥有一张表..表结构太过于繁琐..添加信息时,过多...SQL 我们即将使用是:每个子类映射成一张表,类不对应表…这和我们传统方式继承是一样。...因此.hbm.xml就给出了几个节点供我们使用,分别有以下情况: 子类类共有一张表subclass 不符合数据库设计规范 需要使用鉴别器 子类类都有自己表joined-subclass,那么就是三张表...表结构太过繁琐 插入数据时要生成SQL至少就要两条 子类拥有自己表、类不对应表【推荐】union-subclass 类不对应表要使用abstract来修饰 主键id不能使用自增长策略,修改成

76860
  • 加速你Hibernate引擎(上) 转

    1.引言 Hibernate是最流行对象关系映射(ORM)引擎之一,它提供了数据持久化和查询服务。 在你项目中引入Hibernate并让它跑起来是很容易。...c on p.id=c.payment_id; 优点包括数据表比较紧凑(没有不需要可空字段),数据跨三个子类表进行分区,容易使用表与其他表进行关联。...紧凑数据表可以针对基于行数据库做存储块优化,让SQL执行得更好。数据分区增加了数据修改并发性(除了类,没有热点),OLTP系统通常会更好些。 同样,第二个查询不需要包含其他子类属性。...因为不能跨类和子类字段来建立复合索引,如果需要按这些列进行查询,性能会受影响。任何子类数据修改都涉及两张表:表和子类表。...因为类通常是抽象,所以具体三张表是必须[开头处说3张或更多表是必须],任何子类数据修改只涉及一张表,运行起来更快。 缺点是SQL(from子句和union all子查询)太复杂。

    61630

    系统学习javaweb-10-Hibernate配置与api操作

    com.csxiaoyao.utils 自动建表、创建Session工厂获取Session对象抽取 【配置文件1】:hibernate.cfg.xml 主配置文件说明 【配置文件2...】:Employee.hbm.xml 单列主键映射普通字段类型说明 【配置文件3】:User.hbm.xml 列主键映射配置 【配置文件4】:mapping下所有配置文件 关联映射...(many2many) 一对一映射(one2one 对一特殊应用) 组件映射(component 多个bean合成一张表、基于主键/基于外键) 继承映射(extends 所有子类映射到一张表...、每个类映射一张表、每个子类映射一张表) 4.1 集合映射 (collection)用户与收货地址,一个用户对应多个地址 4.2 对一与一对映射 在一对多与对一关联关系中,保存数据最好通过多一方来维护关系...获取数据 无影响 3.

    94520

    Hibernate继承映射

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

    99540

    Hibernate映射继承关系

    Hibernate中,继承关系是面向对象编程中常见一个概念,主要涉及到类与子类之间关系。在实际开发过程中,我们有时候需要将继承关系映射数据库中,以便进行数据操作。...Hibernate实体类是指对应于数据库中一张表Java类,继承关系映射子类属性映射到同一张表中或者分别映射到不同表中。...在Hibernate中,继承关系映射方式主要有三种,分别是单表继承、多表继承和一对一继承。单表继承在单表继承中,继承关系子类类使用同一个表。...子类类有共同属性,而子类定义新属性,则沿用属性,使用null来填充该属性。在映射数据库时,使用表中一个自增长id来区分子类类实体。...多表继承多表继承是指每个实体类都映射到不同表中,这样可以彼此独立地进行操作。类和子类之间是基于主键关系映射,因此,在关系表中需要定义外键来表达继承关系。

    52130

    初识Hibernate之继承映射

    Hibernate支持以下三种数据生成策略: 每个类分层结构一张表 每个子类一张表 每个具体类一张表 一、每个类分层结构一张表      对于这种数据生成策略,最终Hibernate会在数据库中生成一张数据表...那在我们取数据时候,Hibernate该如何区分当前记录对应是哪个实体类呢?...,union-subclass告诉Hibernate当前配置实体类是person类子类,并用table属性指定对应数据表名。...三、每个子类一张表      这种数据生成策略主要思想就是将公共信息存放在表中,子表只保存自己独有的字段信息了。...,在Hibernate生成数据时候会将student和teacher表主键作为外键关联主键。

    81280

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

    https://blog.csdn.net/huyuyang6688/article/details/50703988   上篇文章说是每个类映射一张表,不管是类还是子类。...  配置映射文件时,类还用标签来定义即可;用标签定义两个子类,且每个类对应信息是完全,包含了所有从父类继承下来属性。...子类特有属性同样用定义即可。用abstract属性表示类Animal为抽象类,这样Animal就不会映射成表了。   ...《【SSH快速进阶】——Hibernate继承映射:每棵继承树映射一张表》中测试一致。   ...【Hibernate继承映射综合分析】   如果系统需要经常进行查操作且子类数量较多,则建议用第一种方案,即每棵生成树映射一张表,这也是最常用方法,效率较高。

    44140

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

    上图中Pig类和Bird类继承Animal类,要让每个类映射一张表,就是让着三个类都分别映射一张表,但同时这三张表也跟对应三个类似的,有继承关系,在类对应表中,实际上会存储所有子类对应记录,如下表所示...  配置映射文件时,类还用标签来定义即可;用标签定义两个子类, 标签内必须有key标签,表示子类对应表中记录主键,这个主键与类表中记录主键一一对应...>   启动程序执行建表语句如下,一共建立了三张表,并且两个子类对应表中主键与类对应表中主键一致: alter table t_bird drop foreign key FKCB5B05A431E44651...所以对对象操作同上篇文章《【SSH快速进阶】——Hibernate继承映射:每棵继承树映射一张表》中测试一致。...---- 【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate继承映射:每个类映射一张表》】

    39830

    2020 最新java面试题附答案

    比如有个需求是写鸭子对象,鸭子有叫,飞,外形这三种方法,如果每个鸭子类都写这三个方法会出现代码冗余,这时候我们可以把鸭子中叫,飞,外形这三个方法提取出来,放到鸭类中,让每个鸭子都继承这个鸭类,重写这三个方法...9、类与子类之间调用顺序(打印结果) a) 类静态代码块 b) 子类静态代码块 c) 类构造方法 d) 子类构造方法 e) 子类普通方法 f) 重写方法,则打印重写后方法 10、内部类与外部类调用...13、hibernate核心思想 a) Hibernate核心思想是ROM对象关系映射机制。它是将表与表之间操作映射成对象与对象之间操作。...也就是从数据库中提取信息会自动按照你设置映射要求封装成特定对象。所以hibernate就是通过将数据表实体类映射,使得对对象修改对应数据修改。...,事物可以维护数据完整性但是它却不能保证数据关联性,使用外键可以保证数据关联性 f) 使用索引,索引是提高数据库性能常用方法,它可以令数据库服务器以比没有索引快速度检索特定行,特别是对于

    49030

    深入了解数据校验(Bean Validation):从深处去掌握@Valid作用(级联校验)以及常用约束注解解释说明【享学Java】

    作用和特点如下: 基于不同数据:如xml、注解。(还有个编程映射) 这三种类型。...} MetaDataProvider只返回直接为一个类配置数据 它不处理从类、接口合并数据(简单说你@Valid放在接口处是无效) public interface MetaDataProvider...总结一下调用此方法两个原始入口(一个构造器,一个接口方法): ValidatorFactory.getValidator()获取校验器时候,初始化时会自己new一个,调用栈如下图: ?...此处说一句:项是有这么,但是并不是每一个都需要走验证逻辑。...长度/size大小>0(注意:null is not valid) @Size CharSequence子类型、Collection、Map、数组 2.0。min:最小值 max:最大值。

    5.8K30

    据说是来自阿里最新java面试题(技术面试)

    比如有个需求是写鸭子对象,鸭子有叫,飞,外形这三种方法,如果每个鸭子类都写这三个方法会出现代码冗余,这时候我们可以把鸭子中叫,飞,外形这三个方法提取出来,放到鸭类中,让每个鸭子都继承这个鸭类,重写这三个方法...7、类与子类之间调用顺序(打印结果) a) 类静态代码块 b) 子类静态代码块 c) 类构造方法 d) 子类构造方法 e) 子类普通方法 f) 重写方法,则打印重写后方法 8、内部类与外部类调用...11、hibernate核心思想 a) Hibernate核心思想是ROM对象关系映射机制。它是将表与表之间操作映射成对象与对象之间操作。...也就是从数据库中提取信息会自动按照你设置映射要求封装成特定对象。所以hibernate就是通过将数据表实体类映射,使得对对象修改对应数据修改。...,事物可以维护数据完整性但是它却不能保证数据关联性,使用外键可以保证数据关联性 f) 使用索引,索引是提高数据库性能常用方法,它可以令数据库服务器以比没有索引快速度检索特定行,特别是对于

    86250

    Java Web 前端到后台常用框架介绍

    支持缓存管理器实例,以及一个实例多个缓存区域 提供Hibernate缓存实现微信搜索 Web项目聚集地 获取更多实战教程。...这些数据类型都支持push/pop、add/remove取交集并集和差集更丰富操作,而且这些操作都是原子性。微信搜索 Web项目聚集地 获取更多实战教程。...一个实体应当尽量少与其他实体之间发生相互作用,使得系统功能模块相对独立。 使用多个隔离接口,比使用单个接口要好。 里氏代换原则:子类能力必须大于等于类,即类可以使用方法,子类都可以使用。...返回值也是同样道理。假设一个类方法返回一个List,子类返回一个ArrayList,这当然可以。如果类方法返回一个ArrayList,子类返回一个List,就说不通了。...这里子类返回值能力是比类小。 还有抛出异常情况。任何子类方法可以声明抛出类方法声明异常子类。 而不能声明抛出类没有声明异常。

    99520

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

    ”,类与类之间有继承关系,Hibernate中也对这种继承关系提供了映射封装。   ...Hibernate为继承映射提供了三种策略   1、每棵继承树使用一张表   2、每个子类使用一张表   3、每个具体类使用一张表   本文对第一种策略进行说明。...  配置映射文件时,类还用标签来定义即可;添加区分字段(比如上面表1中Type字段)需要用标签来定义;用标签定义两个子类,与类“...>   映射文件中标签还可以与标签同级,但是要加上属性extends,属性值为类全路径名称。   ...插入类(Animal)时,默认把类名当做type了 查询测试 ---- load查询   根据配置,鉴别值(表中type)在存储时候会自动存储,在加载时候也会根据鉴别值映射取得相应对象。

    39120

    Java Web前端到后台常用框架介绍

    (B)根据传入参数对象解析MappedStatement对象,得到最终要执行SQL和执行传入参数。 (C)获取数据库连接,根据得到最终SQL语句和执行传入参数到数据库执行,并得到执行结果。...7、 具有缓存和缓存管理器侦听接口 8、支持缓存管理器实例,以及一个实例多个缓存区域 9、提供Hibernate缓存实现 缺点: 1、使用磁盘Cache时候非常占用磁盘空间:这是因为DiskCache...这些数据类型都支持push/pop、add/remove取交集并集和差集更丰富操作,而且这些操作都是原子性。在此基础上,redis支持各种不同方式排序。...里氏代换原则:(1)子类能力必须大于等于类,即类可以使用方法,子类都可以使用。(2)返回值也是同样道理。假设一个类方法返回一个List,子类返回一个ArrayList,这当然可以。...如果类方法返回一个ArrayList,子类返回一个List,就说不通了。这里子类返回值能力是比类小。(3)还有抛出异常情况。任何子类方法可以声明抛出类方法声明异常子类

    1.9K70

    Java Web从前端到后台常用框架介绍

    (B)根据传入参数对象解析MappedStatement对象,得到最终要执行SQL和执行传入参数。 (C)获取数据库连接,根据得到最终SQL语句和执行传入参数到数据库执行,并得到执行结果。...等方式进行分布式缓存 7、 具有缓存和缓存管理器侦听接口 8、支持缓存管理器实例,以及一个实例多个缓存区域 9、提供Hibernate缓存实现 缺点: 1、使用磁盘Cache时候非常占用磁盘空间...这些数据类型都支持push/pop、add/remove取交集并集和差集更丰富操作,而且这些操作都是原子性。在此基础上,redis支持各种不同方式排序。...里氏代换原则: (1)子类能力必须大于等于类,即类可以使用方法,子类都可以使用。 (2)返回值也是同样道理。假设一个类方法返回一个List,子类返回一个ArrayList,这当然可以。...如果类方法返回一个ArrayList,子类返回一个List,就说不通了。这里子类返回值能力是比类小。 (3)还有抛出异常情况。任何子类方法可以声明抛出类方法声明异常子类

    1.5K30

    那些你曾错过JAVA题(三)

    5.以资源容器,DAO实现和事务策略等形式与Hibernate,JDO和iBATIS SQL Maps集成。利用众多翻转控制方便特性来全面支持,解决了许多典型Hibernate集成问题。...A.加载Servlet类.class对应数据 B.创建servletRequest和servletResponse对象 C.创建ServletConfig对象 D.创建Servlet对象 解析: 有图有真相...Super.test() flag=1 Sub.Sub() flag=5 解析: 在继承中代码执行顺序为: 1.类静态对象,类静态代码块 2.子类静态对象,子类静态代码块 3.类非静态对象...,类非静态代码块 4.类构造函数 5.子类非静态对象,子类非静态代码块 6.子类构造函数 对于本题来说:在只想new Sub(5)时候,类先初始化了 int flag = 1,然后执行构造函数...Super(),类构造函数中执行test()方法,因子类是重写了test()方法,因此类构造函数中test()方法实际执行子类test()方法,所以输出为Sub.test() flag=

    55520

    Java EE实用教程笔记----(8)第八章 Hibernate映射机制

    今天开讲Hibernate映射机制啦,实例挺多,但不好理解,比较抽象,不懂的话多读几遍,查查资料,共勉。 前言 Hibernate映射机制总结 ? ?...第二部分 数据类型映射Hibernate映射文件中,用标签来说明POJO类属性与数据库表中哪一个字段对应,用type属性说明对应属性应该使用什么数据类型。...用户也可在配置文件中直接写入设置Hibernate自身数据类型,代码如下: ? 第三部分 对象关系映射 ?...现在就要考虑继承关系在数据库中建表问题了,这种情况可以有3中方法来设计数据库: 1.每个子类一个数据表 2.每个类一个数据表 3.共享一个数据库表 一 每个子类一个数据表 设计两张数据库表,分别是yjs...该种情况也只需要配置一个映射文件Xs.hbm.xml即可,其子类信息关系也会在映射文件中体现。 数据存取也很简单,只需操作不同类来得到想要得到信息。 ?

    1.1K20
    领券