0

我想知道休眠是如何工作的……假设我有三个实体类:A、B 和 C。

我知道已经知道以下事实:

  • 我不会对 B 对象做任何选择语句。
  • 我将在 B 中插入(通过调用 persist())数十万行新行。
  • 我将选择和更新 A 对象数百次。
  • 我不会对 C 对象做任何操作。
  • 数据库中以前保存了数十万个 C 对象。
  • 在另一个会话中,我将重复完全相同的操作。

结果,数据库将变得越来越大,我注意到在 B 对象上调用 persist() 变得更慢。

我的问题是:

  1. hibernate 会加载数据库中的所有对象吗?所有 A、B 和 C 对象?
  2. 如何查看 hibernate 为从数据库加载对象所做的操作?
  3. 我可以控制装载操作吗?事实上,我不想加载 C 对象,也不想加载 B 对象。
  4. 如何查看和控制数据库中实际加载为实体对象的记录是什么?
  5. 如果对 B 对象的 id 的唯一性进行验证操作,我可以在日志文件中看到此验证吗?
  6. 是否可以停用验证操作以加速 B 对象的 persist() 操作?事实上,我可以在我的代码中管理 id 的唯一性,我不想让 hibernate 验证它。
4

1 回答 1

2

1) 不,只有必需的

2)您可以配置休眠日志以显示执行的SQL和DML语句

3)您只加载选定的对象。另外,您可以为关联指定 EAGER 或 LAZY

4) 你为什么要这样做?这是休眠任务。

5) 如果一个 ID 不是唯一的,它就不是一个 ID。时期。

6)休眠只是发送到数据库,数据库执行大部分检查。如果您想“调整” Hibernate 以提高性能,请不要将 Hibernate 用于该操作。

于 2012-08-13T22:01:55.370 回答