2

我想现在 Hibernate 中的 CascadeType 和 FetchType 有什么区别?

它们看起来非常相似,但我想它们不能互换,对吧?什么时候使用它们?它们可以同时使用吗?

4

4 回答 4

8

这是2个不同的东西:

CascadeTypeHib 中。可能是REFRESH, MERGE, ...,ALL您将其放在相关实体下,如果当前实体是:刷新、更新、删除等,它会确定相关实体的行为CascadeType。因此,每当您的实体受到影响时,就会告诉相关实体是否也应该受到影响。

FetchType只能是 2 :EAGERLAZY. 您也可以将它放在相关实体下,它确定是在当前实体初始化时立即初始化相关实体EAGER还是仅按需初始化(LAZY)。

于 2015-07-09T13:29:29.910 回答
1
于 2015-07-09T13:30:43.103 回答
1

两者是不同的配置,您可以将其与简单的 SQL 关联起来。

Cascade 告诉您更新一个实体时会发生什么(在 sql 中删除级联)

Fetch 告诉查询将如何被执行(join、lazy ...)

于 2015-07-09T13:33:16.967 回答
1

他们两个有很大的不同。

  • CascadeType是一个属性,用于定义父子关系中的级联。
  • FetchType是用于定义获取策略的属性,用于优化 Hibernate 生成的 select 语句,使其尽可能高效。

您可以在以下位置找到更多关于它们的信息:

  1. Hibernate – 获取策略示例
  2. Hibernate JPA 级联类型
于 2015-07-09T13:34:19.347 回答