欢迎来到Hibernate社区通讯,其中我们分享了一些博客文章、论坛和StackOverflow问题,这些内容对于我们用户特别相关。

文章

当同时检索父实体及其子关联时,Hibernate在内存中应用根级分页,而SQL查询检索所有匹配提供筛选条件的数据。在内存中分页实体结果时,Hibernate会在应用程序日志中发出以下警告信息

HHH000104: firstResult/maxResults specified with collection fetch; applying in memory!

然而,如果父记录和子记录的数量很大,应用SQL级别的分页要高效得多。 这篇文章 解释了如何限制与关联子记录一起检索的父实体数量。

默认情况下,Hibernate在检索实体时加载所有实体属性,如果有Blob/Clob或大列,这可能不是非常高效。为此,Hibernate提供了字节码增强机制,可以配置为按需加载实体属性。 这篇文章 提供了有关 enableLazyInitialization 字节码增强模式的更多详细信息。

在记录SQL语句时,打印底层数据库事务ID非常有用,这样您可以在以后根据相关事务ID聚合SQL语句。 这篇文章 展示了您如何在使用Oracle、SQL Server、PostgreSQL和MySQL时检索数据库事务ID。

为了帮助您找到问题的源头,Hibernate提供了上下文特定的异常。 这篇文章 提供了Hibernate可以抛出的异常类型的综合列表,以及如何克服触发每个异常的潜在问题。

实体标识符可以是手动分配或自动生成。对于自动生成的实体标识符,您可以选择自动增长的数值列或UUID。如果您想使用UUID标识符,这篇文章解释了在持久化实体时如何优化使用Spring Data Repositories生成的SQL语句。

如果您想映射一个主键由多个列组成的实体,您需要使用组合标识符。这篇文章演示了如何使用Hibernate特定的多个@Id映射来实现这一目标。

在使用JPA和Hibernate时,多对多关系表的外键表在实体建模级别是隐藏的,因为只需要映射父侧。


返回顶部