CascadeType与FetchType

时间:2015-07-09 13:21:51

标签: java hibernate jpa cascading fetching-strategy

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

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

4 个答案:

答案 0 :(得分:7)

这是两件不同的事情:

Hib中的CascadeType。可以是REFRESHMERGE,...,ALL您将其置于相关实体下,而则确定相关实体的行为(如果当前实体)是:刷新,更新,删除等等。因此,只要您的实体受到影响,CascadeType就会告知相关实体是否也会受到影响。

FetchType只能是2:EAGERLAZY。这个你也可以放在相关实体下面,它确定当初实体当前实体是否应该立即初始化相关实体EAGER或仅按要求< / strong>(LAZY)。

答案 1 :(得分:1)

两者都是不同的配置,您可以将它与简单的SQL相关联。

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

Fetch告诉你如何执行查询(join,lazy ...)

答案 2 :(得分:0)

Cascading用于将entity state transitions从父实体传播到子级。

Fetching用于加载相关实体,您可以:

  • 全局提取策略(通过实体映射定义)
  • 查询时间提取策略(使用HQL / JPQL FETCH指令)

答案 3 :(得分:0)

他们俩之间有很大的不同。

  • CascadeType 是一个属性,用于定义父级和子级之间的关系中的级联。
  • FetchType 是一个用于定义提取策略的属性,用于优化Hibernate生成的select语句,以便它 可以尽可能高效。

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

  1. Hibernate – fetching strategies examples
  2. Hibernate JPA Cascade Types