`
shaqiang32
  • 浏览: 106186 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Hibernate继承映射的第一种策略:每个类对应一张表

阅读更多

Hibernate继承映射的第一种策略:每个类对应一张表

1、如何映射
这种策略是使用joined-subclass标签来定义子类的。父类、子类,每个类都对应一张数据库表。
在父类对应的数据库表中,实际上会存储所有的记录,包括父类和子类的记录;在子类对应的数据库表中,
这个表只定义了子类中所特有的属性映射的字段。子类与父类,通过相同的主键值来关联。实现这种策略的时候,有如下步骤:
父类用普通的<class>标签定义即可
父类不再需要定义discriminator字段
子类用<joined-subclass>标签定义,在定义joined-subclass的时候,需要注意如下几点:
Joined-subclass标签的name属性是子类的全路径名
Joined-subclass标签需要包含一个key标签,这个标签指定了子类和父类之间是通过哪个字段来关联的。
如:<key column=”PARENT_KEY_ID”/>,这里的column,实际上就是父类的主键对应的映射字段名称。
Joined-subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),
也可以与class标签平行。 当Joined-subclass标签的定义与class标签平行的时候,需要在Joined-subclass标签中,添加extends属性,里面的值是父类的全路径名称。
子类的其它属性,像普通类一样,定义在joined-subclass标签的内部。

2、存储和多态查询参见策略一:每棵类继承树对应一张表

 

共有三张表

分享到:
评论

相关推荐

    Hibernate继承映射的第一种策略:每棵类继承树对应一张表

    本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承策略。 ### 单一表继承策略 在单一表继承策略中,所有类层次结构中的实例都存储在同一张数据库表中。这种策略通过在表中...

    Hibernate继承映射的第一种策略:每个具体类一张表

    本篇文章将详细探讨Hibernate继承映射的策略,特别是“每个具体类一张表”(Table Per Concrete Class)的映射方式。 在面向对象编程中,继承是常见的代码复用手段,但在关系型数据库中,这种概念并不直接对应。...

    用Hibernate映射继承关系

    第三种映射方式是**类表映射**(Class-Table Inheritance Mapping),其中继承关系树的每个类(包括抽象类)都有其对应的表。这需要使用外键来建立类之间的关系。 ##### 14.3.1 创建映射文件 `Employee`类的映射文件...

    hibernate的继承映射(InheritanceMapping)[文].pdf

    每个子类拥有自己的表,表与类一一对应。这种方式允许子类的字段设置非空约束,但会导致数据库中存在大量的小表,且关联查询可能会复杂。 10.1.3. 每个子类一张表,使用辨别标志(Discriminator) 这种策略与第2种...

    hibernate所有开发包

    3. Inheritance:Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-hierarchy。 四、关联映射 1. OneToMany/ManyToOne:一对多和多对一关系映射,使用@OneToMany和@ManyToOne注解,@JoinColumn定义...

    hibernate

    5. **ID生成策略**:每个实体类通常都有一个主键字段,Hibernate提供了多种ID生成策略,如Identity、Sequence、Table、UUID等,以适应不同数据库系统的主键生成需求。 6. **注解(Annotations)**:Hibernate使用...

    hibernate-3.5.6 源码

    3. **实体类(Entity)与映射文件(Hibernate Mapping File, HBM)**:在Hibernate中,每个数据库表通常对应一个Java类,这些类被称为实体类。`*.hbm.xml`文件用于定义实体类与数据库表之间的映射关系,包括字段对应...

    Hibernate类库

    12. **继承映射**:Hibernate也支持类继承的映射,可以将单表、子表或者联合表策略应用到继承层次结构中。 13. **懒加载(Lazy Loading)**:为避免不必要的数据库访问,Hibernate提供了懒加载机制,只有在真正需要...

    Hibernate3 源代码

    - 第一级缓存:每个 Session 内部的缓存,自动管理对象状态,提高性能。 - 第二级缓存:可选的,跨 Session 的缓存,通常由第三方插件如 Ehcache 提供,适用于提高数据读取效率。 7. **事务管理(Transaction ...

    Hibernate ORM 5.2.7.Final User Guide

    - **联合继承**: 每个子类对应一张表,使用@Inheritance(strategy=InheritanceType.JOINED)。 - **表-per-hierarchy**: 所有子类数据存储在一张表中,包含一个表示类层次结构的字段,使用@Inheritance(strategy=...

    Hibernate学习.pdf

    - **继承映射**: 支持多种继承策略,如单表继承、类表继承和子类表继承等。 #### 9. 对象操作 - **查询**: 使用HQL或原生SQL查询数据。 - **修改持久对象**: 直接修改对象的状态,Hibernate会自动同步到数据库。 -...

    HIBERNATE

    - 继承映射:Hibernate支持单表继承、联合继承和表-per-hierarchy等多种继承策略。 - 支持缓存:通过第二级缓存(Second Level Cache)和查询缓存(Query Cache)提高性能,减少对数据库的访问。 - 类型转换:使用@...

    hibernate独立开发包

    7. **第一级缓存和第二级缓存**:第一级缓存是每个Session内的缓存,自动管理实体对象的状态;第二级缓存则是一个可选的全局缓存,跨Session共享,可以提高数据读取效率。 8. **事务管理**:Hibernate支持JTA和JDBC...

    Hibernate In Action中文版电子书

    每个实体类对应数据库中的一张表,类的属性与表的列相对应。@Id注解标记主键字段,@GeneratedValue定义主键生成策略。 4. **Session和Transaction**:Hibernate的Session接口负责对象的持久化操作,它是事务处理的...

    hibernate3.1参考手册中文版.pdf

    - **表格分片继承(Table Per Concrete Class)**:每个具体类对应一个表,不包含抽象类属性。 8. **事件监听器**: - Hibernate允许注册监听器,监听对象状态的改变,如保存、更新、删除等事件。 综上所述,...

    hibernate 3.2.0 RC1 中文帮助文档

    3. **实体类(Entity)**:实体类代表数据库中的表,每个实体类通常对应一张表,类的属性映射为表的列。使用`@Entity`注解标记实体类,并使用`@Table`指定对应的表名。 4. **属性映射(Annotations)**:Hibernate ...

Global site tag (gtag.js) - Google Analytics