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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 延迟加载

    SQL & Hibernate
    等级 14,课时 0
    1.1 问题背景 当您开始使用真实的数据库时,您会立即记住这句话“过早的优化是万恶之源”。只是现在你以消极的方式记住了她。使用数据库时,优化是必不可少的。您需要在设计阶段就已经使用它。 Hibernate 使得使用数据库非常方便。@OneToMany只需正确注释和,您就可以轻松获得任何子对象@ManyToMany。例子:
    可用
  • 映射集合时的延迟加载

    SQL & Hibernate
    等级 14,课时 1
    2.1 获取选项 Hibernate 的开发人员很早就知道加载子实体的问题。所以他们做的第一件事就是在注释中添加一个特殊的提取@OneToMany参数,@ManyToMany。 该参数可以取两个值: 渴望的 懒惰的 例子: @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    可用
  • LazyCollectionOption.EXTRA

    SQL & Hibernate
    等级 14,课时 2
    了解 LazyCollectionOption.EXTRA 但最令人感兴趣的是 LazyCollectionOption.EXTRA 值。如果您将它指定为@LazyCollection注释的值,那么 Hibernate 将尽可能长时间地延迟加载集合的元素。 如果您尝试获取集合中的元素数量: User user = session.load(User.class, 1);
    可用
  • 加入获取

    SQL & Hibernate
    等级 14,课时 3
    问题描述 正如我们上面所说, LazyCollectionOption.EXTRA注解有一个问题——它为每个对象对数据库执行单独的请求。我们需要以某种方式向 Hibernate 解释我们希望它立即为我们的父对象加载所有子对象。 Hibernate 的开发者想出了解决这个问题的方法, HQL 中的join fetch operator 。 HQL查询示例: select distinct task from Task t left join fetch t.employee o
    可用
  • Hibernate 中的数据缓存

    SQL & Hibernate
    等级 14,课时 4
    永远不要编写缓存解决方案 另一种加快数据库工作的方法是缓存我们之前已经请求过的对象。 重要的!永远不要编写自己的缓存解决方案。这项任务有很多你做梦也想不到的陷阱。 问题 1 -缓存刷新。有时,当需要从缓存中删除对象或在缓存中更新对象时,会发生事件。胜任地做到这一点的唯一方法是通过缓存引擎将所有请求传递给数据库。否则,每次你都必须明确地告诉缓存应该删除或更新其中的哪些对象。 问题 2 -内存不足。在您发现内存中的对象占用大量空间之前,缓存似乎是个好主意。您需要额外的数十 GB
    可用
  • 配置二级缓存

    SQL & Hibernate
    等级 14,课时 5
    并发策略 在 Hibernate 中启用二级缓存后,您需要向 Hibernate 说明我们要缓存哪些 Entity 对象以及如何缓存。 为此,Hibernate 为实体类提供了一个特殊的注释 - @Cache。例子: @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 需要为我们要为其使用二级缓存的每个 Entity 实体编写此注释。例子: @Entity
    可用
  • 自定义查询缓存

    SQL & Hibernate
    等级 14,课时 6
    为什么需要查询缓存 让我们用 HQL 中的员工重写我们的例子: Employee director1 = session.createQuery("from Employee where id = 4").uniqueResult();
    可用
  • 设置缓存引擎

    SQL & Hibernate
    等级 14,课时 7
    设置缓存 让我们回到 hibernate.cfg.xml 文件中的缓存设置:
    可用
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