Hibernate继承映射的第一种策略:每个具体类一张表
1、如何映射
这种策略是使用union-subclass标签来定义子类的。每个子类对应一张表,而且这个表的信息是完备的,
即包含了所有从父类继承下来的属性映射的字段(这就是它跟joined-subclass的不同之处,joined-subclass定义的子类的表,
只包含子类特有属性映射的字段)。实现这种策略的时候,有如下步骤:
父类用普通<class>标签定义即可
子类用<union-subclass>标签定义,在定义union-subclass的时候,需要注意如下几点:
Union-subclass标签不再需要包含key标签(与joined-subclass不同)
Union-subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),
也可以与class标签平行。 当Union-subclass标签的定义与class标签平行的时候,需要在Union-subclass标签中,添加extends属性,里面的值是父类的全路径名称。
子类的其它属性,像普通类一样,定义在Union-subclass标签的内部。这个时候,虽然在union-subclass里面定义的只有子类的属性,但是因为它继承了父类,所以,
不需要定义其它的属性,在映射到数据库表的时候,依然包含了父类的所有属性的映射字段。
!!!特别注意:在保存对象的时候,id不能重复(所以不能用自增方法生成主键)
2、存储和多态查询参见策略一:每棵类继承树对应一张表
2张表
分享到:
相关推荐
本文将详细探讨“Hibernate继承映射的第一种策略:每个类对应一张表”的概念、实现方式以及其优缺点。 首先,我们需要理解Hibernate继承映射的基本策略。在面向对象编程中,类继承是常见的代码复用手段,但在数据库...
本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承策略。 ### 单一表继承策略 在单一表继承策略中,所有类层次结构中的实例都存储在同一张数据库表中。这种策略通过在表中...
在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/Class Mapping),是最直观且简单的映射方式。它不考虑抽象类或继承关系,而是...
10.1.5. 每个具体类一张表(Table per concrete class) 每个具体类(非抽象类)都有自己的表,不包括抽象类。这种方式避免了鉴别器字段,但同样可能导致大量小表。 10.1.6. 每个具体类一张表,使用隐式多态 与上一...
- **每个具体类一张表**: 每个具体子类使用单独的表。 - **表使用隐式多态实现每个具体类**: 通过隐式多态实现。 - **混合隐多态性与其他继承映射**: 结合使用隐式多态和其他策略。 #### 11. 处理对象 - **...
- **9.1.4 混合使用“每个类分层结构一张表”和“每个子类一张表”**:说明混合使用两种策略的方法。 - **9.1.5 每个具体类一张表 (Table per concrete class)**:介绍每个具体类一张表的策略。 - **9.1.6 每个...
继承映射可以是整个继承关系都在一个表中、每个子类一个表、每个具体类一个表、隐式多态等。 使用 Hibernate 可以通过 API 查询、更新对象。API 操作可以是 iterator 操作、绑定参数、分页等。 事务性和并发 ...
3. Inheritance:Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-hierarchy。 四、关联映射 1. OneToMany/ManyToOne:一对多和多对一关系映射,使用@OneToMany和@ManyToOne注解,@JoinColumn定义...
- **Hiberante的对象继承关系之--TPC一个类一张表.doc**:讲述Hibernate处理对象继承和多表映射的方法。 - **hibernate 非主键自增.doc**:关于非主键字段如何实现自动增长的策略。 - **Struts和Hibernate之间搭起...
5. **ID生成策略**:每个实体类通常都有一个主键字段,Hibernate提供了多种ID生成策略,如Identity、Sequence、Table、UUID等,以适应不同数据库系统的主键生成需求。 6. **注解(Annotations)**:Hibernate使用...
3. **实体类(Entity)与映射文件(Hibernate Mapping File, HBM)**:在Hibernate中,每个数据库表通常对应一个Java类,这些类被称为实体类。`*.hbm.xml`文件用于定义实体类与数据库表之间的映射关系,包括字段对应...
10.1.5. 每个具体类一张表(Table per concrete class) 10.1.6. Table per concrete class, using implicit polymorphism 10.1.7. 隐式多态和其他继承映射混合使用 10.2. 限制 11. 与对象共事 11.1. Hibernate对象...