CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 使用实体层次结构

    SQL & Hibernate
    等级 15,课时 0
    保护问题 今天我们将有一个新的超级有趣的方案——使用Hibernate特性将类层次结构保存到数据库中。 类层次结构是一组通过继承关系相互关联的类。 假设您要将三个类存储在数据库中: class User {
    可用
  • 整个类层次结构的单个表

    SQL & Hibernate
    等级 15,课时 1
    描述 存储类层次结构的下一个方法是将层次结构中的所有类存储在一个表中。这种策略称为单表。 例如,像这样: CREATE TABLE user_ employee_client {
    可用
  • 判别器

    SQL & Hibernate
    等级 15,课时 2
    描述 在上一课中,您看到 Hibernate 使用特殊的 DTYPE VARCHAR 列来存储实体类的名称。这样的列称为鉴别器。它用于明确确定为数据库中的给定行创建哪个类。 您可以使用@DiscriminatorColumn注释操作此列。例子: @DiscriminatorColumn(name="имя_колонки", discriminatorType = DiscriminatorType.INTEGER) 根据 JPA 规范,鉴别器可以有以下类型: 细绳 字符
    可用
  • 连接表

    SQL & Hibernate
    等级 15,课时 3
    描述 在数据库中存储类层次结构的另一种策略称为 Joined Table。它有一个特殊的注释: @Inheritance(strategy = InheritanceType.JOINED) 我们班级的一个例子: @Inheritance(strategy = InheritanceType.JOINED)
    可用
  • 每班表

    SQL & Hibernate
    等级 15,课时 4
    5.1 说明 最后,最后一个策略是每类表。这意味着每个类将使用一个单独的表。从某种意义上说,这是同一个 MappedSuperClass,只是更新了形式。 首先,您需要使用注释: @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    可用
  • 选择层次结构保存策略

    SQL & Hibernate
    等级 15,课时 5
    描述 上述每种策略和技术都有其自身的优点和缺点。选择特定策略的一般建议如下所示: 基于 UNION 的 TABLE_PER_CLASS 策略 如果不需要多态查询和关联,则最好选择此策略。如果您很少做(或根本不做)“从用户用户中选择用户”。如果您没有任何引用用户的实体类,这是最好的选择(因为您仍然可以添加优化的多态查询和关联)。 SINGLE_TABLE 策略 应使用此策略: a) 仅适用于简单任务。在规范化和 NOT NULL 约束至关重要的情况下,应该首选策略 #3 (JO
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym