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

Hibernate实体继承。单表延迟加载

Hibernate实体继承是指在Hibernate框架中,通过继承关系来映射数据库表之间的关系。它允许我们在数据库中使用继承关系来组织数据,同时提供了方便的对象关系映射(ORM)功能。

Hibernate实体继承可以分为三种类型:单表继承、表格继承和混合继承。

  1. 单表继承(Single Table Inheritance): 单表继承将所有子类的属性都存储在一个表中,通过一个类型字段来区分不同的子类。这种继承方式简单、高效,但当子类较多时,表中会存在大量的空值。
  2. 优势:
    • 简单、高效,适用于继承层次较浅的情况。
    • 查询效率高,只需操作一个表。
    • 应用场景:
    • 继承层次较浅,子类之间的属性差异较小。
    • 数据库表结构相对简单。
    • 推荐的腾讯云相关产品:
    • 腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb
  • 表格继承(Table Per Class Inheritance): 表格继承将每个子类映射到一个独立的表中,子类表中包含了父类的属性。这种继承方式可以更好地保持数据库的规范性,但查询效率较低。
  • 优势:
    • 数据库结构规范,每个表只包含必要的字段。
    • 支持子类之间的属性差异较大。
    • 应用场景:
    • 继承层次较深,子类之间的属性差异较大。
    • 数据库表结构相对复杂。
    • 推荐的腾讯云相关产品:
    • 腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb
  • 混合继承(Joined Subclass Inheritance): 混合继承将每个子类映射到一个独立的表中,子类表中只包含子类特有的属性。父类和子类之间通过外键关联。这种继承方式可以更好地保持数据库的规范性,同时查询效率也较高。
  • 优势:
    • 数据库结构规范,每个表只包含必要的字段。
    • 查询效率高,只需操作相关的表。
    • 应用场景:
    • 继承层次较深,子类之间的属性差异较大。
    • 数据库表结构相对复杂。
    • 推荐的腾讯云相关产品:
    • 腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb

以上是关于Hibernate实体继承的概念、分类、优势、应用场景以及推荐的腾讯云相关产品和产品介绍链接地址。请注意,这里只提供了腾讯云相关产品作为示例,并不代表其他云计算品牌商的产品不适用或不推荐。

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

相关·内容

Hibernate延迟加载

前言: 上一篇文章我们学习了Hibernate的多表关联关系,这里就涉及到一个很实用的概念:延迟加载或者也叫惰性加载,懒加载。使用延迟加载可以提高程序的运行效率。...Java程序与数据库交互的频次越低,程序运行效率越高,所以我们应该尽量减少Java程序与数据库的交互次数,Hibernate延迟加载就很好的做到了这一点。...语句,分别查询customer和orders中的数据。...延迟加载使用起来很简单,直接在实体关系映射文件中进行配置即可。...总结: Hibernate延迟加载的配置有很多种方式,都是通过给标签设置lazy属性完来完成,并且不同的标签lazy属性的值是不一样的,重点还是理清楚实体类之间的关联关系,才可以通过设置lazy属性实现优化代码效率的目的

1.4K10

Hibernate延迟加载

文章目录 1. hibernate延迟加载 1.1. 什么是延迟加载 1.2. 好处 1.3. 如何使用延迟加载 1.4....使用延迟加载需要注意的问题 hibernate延迟加载 什么是延迟加载 在使用某些Hibernate方法查询数据的时候,Hibernate返回的只是一个空对象(除了id外属性都为null),并没有真正的查询数据库...而是在使用这个对象的时候才会出发查询数据,并将查询到的数据注入到这个空对象中,这种查询时机推迟到对象访问时的机制称之为延迟加载。...简单的说,使用延迟加载获取的对象,只有在获取其中的除了id之外的属性才会发出sql语句。...=null) { session.close(); } } } 使用延迟加载需要注意的问题 采用延迟加载机制的操作,需要避免session的提前关闭。

89110

hibernate延迟加载详解

hibernate延迟加载详解 Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载实体所关联的实体默认也会被延迟加载。...如果采用延迟加载Hibernate 就只加载 Person 实体对应的数据记录。...正如图 1 输出所看到的,此时 Hibernate 只从 Person 实体对应的数据中抓取数据,并未从 Address 对象对应的数据中抓取数据,这就是延迟加载。...关联实体延迟加载 默认情况下,Hibernate 也会采用延迟加载加载关联实体,不管是一对多关联、还是一对一关联、多对多关联,Hibernate 默认都会采用延迟加载。...从这条 SQL 语句不难看出,Hibernate 加载 Address 实体对应的数据抓取记录,并未从 Person 实体对应的数据中抓取记录,这是延迟加载发挥了作用。

1.3K30

Hibernate延迟加载(懒加载)简介1

什么是延迟加载: 在使用某些Hibernate方法查询数据时,Hibernate返回的只是一个空对象(除id外属性都为null),并没有真正查询数据库。...这种将查询时机推迟到对象访问时的机制称之为延迟加载。...当相关联的session没有关闭时.访问这些懒加载对象(代理对象)的属性(getId和getClass除外);hibernate会初始化这些代理.或用Hibernate.initialize(proxy...连接查询,lazy属性就不起作用 ---- 使用延迟加载需要注意的问题 采用具有延迟加载机制的操作,需要避免Session提前关闭,避免在使用对象之前关闭session。...采用延迟加载方法,返回的对象类型是Hibernate采用CGLIB技术在内存中动态生成的类型,该类型是原实体类的子类,并在子类中重写了属性的get方法。

1.3K20

Hibernate学习---查询

相信学过数据库原理的同学们都深有体会,SQL语句变化无穷,好毫不夸张的说可以实现任意符合我们需要的数据库操作,既然前面讲到Hibernate非常强大,所以Hibernate也是能够实现SQL的一切数据库操作...在SQL中,查询是最常用的语句,同理Hibernate最常用到的也是查询语句,所以今天就来讲讲Hibernate查询: 今天要将的内容分以下几点: 查询所有 查询结果排序 为查询参数动态赋值...分页查询 模糊查询 唯一性查询 聚合函数查询 投影查询 分组查询 查询的迭代 命名查询 Hibernate不仅为我们提供了它本身的查询语句HQL,同时也还提供了SQL和criteria标准查询,接下来我们都会来一一实验....list(); //因为hql语句是面向对象的查询,所以投影查询需要new一个含有所投影字段的对象(同时要在实体类中添加对应是构造函数...的基本查询学的差不多了,当然肯定还有没学到(我这里只列举了我们经常使用到的一些操作)。

1.2K70

ORM中的继承关系映射全解——继承体系、一实体一具体表、一实体一扩展、接口映射

实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。 本文涉及的内容包括: 1. 继承体系 2....一实体一具体表 3. 一实体一扩展 4. 接口实现映射vs基类继承映射 1. 继承体系 所谓继承体系就是用一张数据库存储整个继承体系中的所有实体的数据。...继承体系适合那种继承体系中实体数目相对较少,总记录数相对较少,子类对父类的属性扩展也相对较少的情形。 ...继承体系优点是读/写继承体系中的每个实体的数据,都只需操作一张,性能较好,并且,新增继承类,或扩展实体属性都只需要增减一张的字段就可以了,易于维护;主要缺点是,因为所有的实体共享一张中会有比较多的...这里,我们采用的是继承体系方式,注意每个实体都映射到AllInOneTable这个,只不过对每个实体来说,只使用了AllInOneTable的部分字段。

2.3K90

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

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

1.1K30

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

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

37320

Java程序员面试题集(86-115)

111、如何理解Hibernate延迟加载机制。在实际应用中,延迟加载与session关闭的矛盾是如何处理的? 答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。...Hibernate使用了虚拟代理机制实现延迟加载。返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法时就会去数据库加载数据。但加载数据就需要数据库连接。...延迟加载与session关闭的矛盾一般可以这样处理: ① 关闭延迟加载特性。...答:继承关系的映射策略有三种: ①每个继承结构一张(table per class hierarchy) ②每个子类一张(table per subclass) ③ 每个具体类一张(table per...concrete class) 第一种方式属于策略,其优点在于查询子类对象的时候无需连接,查询速度快,适合多态查询;缺点是可能导致很大。

1.8K70

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

https://blog.csdn.net/huyuyang6688/article/details/50689003   上文说了每棵继承树映射一张,本文继续描述让每个类都映射一张的配置...上图中Pig类和Bird类继承Animal类,要让每个类映射一张,就是让着三个类都分别映射一张,但同时这三张也跟对应的三个类似的,有继承关系,在父类对应的中,实际上会存储所有子类对应的记录,如下表所示...配置 ---- PO对象   跟上篇文章一样,实体类没有任何变化。   ...所以对对象的操作同上篇文章《【SSH快速进阶】——Hibernate继承映射:每棵继承树映射一张》中的测试一致。...---- 【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate继承映射:每个类映射一张》】

38730

什么是Hibernate延时加载

2、Hibernate中主要是通过代理(proxy)机制来实现延迟加载。...2、当session加载某个实体时,会对这个实体中的集合属性值采用延迟加载。 3、当session加载某个实体时,会对这个实体所有端关联的另一个实体对象采用延迟加载。...---- 当实体中存在另一个实体对象的时候,延迟加载决定了抓取方式:当为Lazy加载时,在一个session中,如果不访问实体中的实体对象属性,hibernate就不会级联查询内部实体,当为EAGER的时候...---- 延迟加载也称为懒加载,是Hibernate3关联关系对象默认的加载方式,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。...---- 提高效率,主要是对属性(在数据库中存在相应的)进行延迟加载(load),在第一次查询的时候,只查询当前的,当用到延迟加载的对象时(非延迟加载会查询所有关联属性的),会先从缓存中去找延迟加载的对象

82420

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

上图中Pig类和Bird类继承Animal类,要让每个具体类映射一张,就是只映射Pig和Bird,如下表所示:                        ( 1) ?   ...配置 ---- PO对象   这里采用uuid的主键生成策略,父类Animal的id为String类型,其他实体类没有任何变化。...继承映射:每棵继承树映射一张》中的测试一致。   ...【Hibernate继承映射综合分析】   如果系统需要经常进行查操作且子类数量较多,则建议用第一种方案,即每棵生成树映射一张,这也是最常用的方法,效率较高。   ...---- 【 转载请注明出处——胡玉洋《【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张》】

42440
领券