休眠中一对一、多对一和一对多的默认抓取类型
休眠映射中的默认提取类型是什么?
探索后我所知道的是:
- 对于一对一来说,它是渴望的。
- 对于一对多来说,这是懒惰的。
但是在Eclipse中测试了它之后,它渴望所有人。
这取决于我使用的是JPA还是休眠?
休眠映射中的默认提取类型是什么?
探索后我所知道的是:
但是在Eclipse中测试了它之后,它渴望所有人。
这取决于我使用的是JPA还是休眠?
这取决于您使用的是 JPA 还是 Hibernate。
在 JPA 2.0 规范中,默认值为:
OneToMany: LAZY
ManyToOne: EAGER
ManyToMany: LAZY
OneToOne: EAGER
在冬眠中,一切都是懒惰的
更新:
最新版本的Hibernate与上述JPA默认值一致。
我知道在提出问题时答案是正确的 - 但是由于人们(这分钟像我一样)仍然碰巧发现他们想知道为什么他们的WildFly 10行为不同,我想为当前的Hibernate 5.x版本提供更新:
在《休眠 5.2 用户指南》中,第 11.2 章对此进行了说明。应用抓取策略:
Hibernate 建议静态地将所有关联标记为懒惰,并使用动态提取策略来表示渴望。不幸的是,这与JPA规范不一致,JPA规范定义了默认情况下应该热切地获取所有一对一和多对一关联。Hibernate 作为 JPA 提供程序,遵循该默认值。
因此,Hibernate的行为也像Ashish Agarwal上面为JPA所说的那样:
OneToMany: LAZY
ManyToOne: EAGER
ManyToMany: LAZY
OneToOne: EAGER
(参见 JPA 2.1 规范)