Hibernate中对继承关系的映射有三种方法:
1、每一个具体子类映射成单个数据库表,而抽象基类不参与映射。
优点:数据操作实现简单,每个表中都包含自己所需要的具体子类的所有信息,减少了多表关联操作时的性能消耗。
缺点:
类的修改会导致相对应的表及其子类所对应表的更改。不支持多态查询。
应用:
适合在类层次结构上有一定数量的抽象类的情况下使用。
2、将整个类层次映射为单个数据库表。
这对于子类属性不多的情况非常有效。每个子类由识别列(discriminator column)区分。
优点:
实现简单,并支持多态。同时数据访问也比较简单,因为数据库表中包含了所有需要的信息。
缺点:
增加类层次中的耦合,类层次中任何类的属性的增加都有会导致表的变更。另外,对子类属性的修改错误将会影响到整个类的层次结构。当然也浪费了大量的数据库空间。表中引入区分子类的字段,子类的字段不能创建为空。
3、继承关系中每个类均映射为一个数据库表
优点:
此时,与面向对象的概念是一致的,这种映射实现策略的最大好处就是关系模型完全标准化,关系模型和领域模型完全一致,易于修改基类和增加新的子类。
缺点:
数据库中存在大量的表,为细粒度级的数据模型,访问数据时将存在大量的关联表的操作,效率较低。
详细内容:
Hibernate继承映射-具体类映射为数据库表
: http://www.blogjava.net/wintys/archive/2009/06/21/hibernate_inheritance_concrete.html
Hibernate继承映射-整个类层次映射为单个数据库表
: http://www.blogjava.net/wintys/archive/2009/06/21/hibernate_inheritance_allinone.html
Hibernate继承映射-继承关系中每个类均映射为一个数据库表
: http://www.blogjava.net/wintys/archive/2009/06/21/hibernate_inheritance_separate.html
[附件]:
以上三种继承映射的源代码:hibernate_inheritance.zip
分享到:
相关推荐
一、Hibernate继承映射概述 Hibernate继承映射是将Java中的继承关系映射到数据库的关系模型中。在Java中,一个基类可以有多个子类,而在数据库中,这些子类可以共享一张表或者各自拥有独立的表,这取决于我们选择的...
8. **继承映射** - `@Inheritance`: 控制类的继承策略,如SINGLE_TABLE、JOINED、TABLE_PER_CLASS。 - `@DiscriminatorValue`: 用于多态继承,定义子类在父类表中的区分值。 9. **复合主键** - `@EmbeddedId`: ...
一、Hibernate概述 Hibernate是JBoss组织下的一个开源项目,它提供了一种规则化的框架,将Java类与数据库表进行映射,实现了对象与关系数据之间的无缝转换。在4.3.0.Beta2这个版本中,Hibernate进一步提升了性能,...
一、Hibernate概述 Hibernate是一个开源的ORM框架,它通过提供一种编程和设计模式,使Java开发者能够将数据库操作转化为对Java对象的操作,极大地简化了数据库编程。在Hibernate 4.3.8.Final版本中,它继续强化了对...
### Hibernate继承关系映射概述 在面向对象编程中,继承是核心概念之一,允许子类继承父类的属性和方法。在数据库世界中,虽然没有直接对应继承的机制,但Hibernate等ORM框架提供了多种方式来处理这种关系。本文档...
接下来的部分深入解析了Hibernate的内部架构,包括概述、实例状态等核心概念。特别关注了JMX集成和JCA支持,以及上下文会话的管理,这些对于理解和优化Hibernate应用至关重要。 五、配置详解 配置是使用Hibernate...
- **继承映射**:单表继承、多表继承策略。 - **缓存策略**:如何配置和利用缓存提高性能。 - **性能优化**:批处理、延迟加载的使用技巧。 - **事件监听**:通过监听器实现业务逻辑,如保存前的校验。 总结,`...
为了更好地处理这一过程,众多框架和技术应运而生,其中Hibernate作为一款优秀的对象关系映射(ORM)工具,在Java开发中占据了极其重要的地位。本文将基于提供的文件信息《hibernate入门课件--introduce hibernate....
Hibernate 是一个开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而简化了数据访问逻辑。在 Hibernate 中,执行查询操作的主要方式之一是使用 Hibernate 查询语言(HQL)。 ...
4. **多态性**:Hibernate支持继承和多态,使得对具有继承关系的实体进行统一管理。 5. **事件监听器**:通过实现特定接口,可以监听和处理实体的生命周期事件,如预加载、加载、保存、更新和删除。 6. **拦截器**:...
二、Hibernate概述 Hibernate是一个开源的对象关系映射(ORM)框架,它提供了一种在Java应用程序中管理关系数据库模型的方式。Hibernate自动处理SQL的生成和结果集的映射,使得开发者可以更专注于业务逻辑,而不是...
Hibernate允许用户通过实现特定接口或继承抽象类,注册监听器和拦截器,对实体生命周期的各个阶段进行自定义处理,如对象加载、保存、更新和删除时的前后操作。 8. **关联映射** Hibernate支持一对一、一对多、多...
一、Hibernate Annotations概述 Hibernate Annotations是Hibernate框架的一个扩展,它允许开发者使用Java语言的注解(Annotations)来定义对象与数据库表之间的映射关系,替代传统的Hibernate XML配置文件。这使得...
Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务。而Hibernate注解是其重要组成部分,它通过在Java类和属性上添加元数据...
一、Hibernate概述 Hibernate是一款开源的ORM框架,它允许开发者使用面向对象的方式来操作数据库,将Java对象与数据库表进行映射,实现了数据的透明访问。在Hibernate 5.2.6 Final版本中,它继承了前一版本的优点,...
5. 支持多态性:在继承体系中,InstantObjects能正确处理子类与父类的映射,实现多态查询。 四、使用与集成 InstantObjects的使用通常包括以下几个步骤: 1. 安装和引入库:将InstantObjects库导入到Delphi项目中...