JPA和Hibernate抓取策略的差异
JPA和Hibernate抓取策略的差异
猪刚烈 发表于3年前
JPA和Hibernate抓取策略的差异
  • 发表于 3年前
  • 阅读 38
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

Hibernate和JPA 的抓取策略是有差异的 。这一点在使用JPA注解时会有所体现。有时候我们需要添加一些hibernate独有的注解才能实现比较好的抓取。下面简单提几点。

 

     所谓“抓取策略”,总要涉及两个问:何时抓取以及如果抓取。这两点在Hibernate提供的注解上体现的非常明显。Hibernate提供两套注解分别用来描述“何时抓取”和“如何抓取”。这样看起来非常条理和清晰。但是JPA显然没有这么做。它只提供了fetch=FeatchType.LAZY or FetchType.EAGER.但是我们必须明白这两种选项对应的实际抓取策略是什么。

对于fetch=FeatchType.LAZY:何时抓取:lazy,如何抓取:select

对于fetch=FeatchType.EAGER:何时抓取:eager,如何抓取:join

     这就是JPA对抓取策略的描述。因为它对于lazy和eager只各提供一种抓取方法,因此它就不需要再指定“如何抓取”了。但是hibernate还提供一种subselect抓取,它是配合lazy=true的抓取方法。

如果想要使用subselect抓取,你可以用hibernate的FetchMode.SUBSELECT注解覆写JPA的配制,但是lazy=true这一点,你还是需要使用fetch=FetchType.LAZY来配制的,你只是替换了它的select抓取方法。

共有 人打赏支持
粉丝 22
博文 708
码字总数 110
作品 1
×
猪刚烈
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: