vat*_*ada 12 java orm hibernate jpa hibernate-mapping
我在Hibernate源代码中注意到,ManyToOne映射的默认FetchType是EAGER.而OnetoMany映射的默认加载类型是Lazy.这背后的具体原因是什么?
Ank*_*hal 27
从JPA 2.0 spe c,默认值如下:
OneToMany: LAZY
ManyToOne: EAGER
ManyToMany: LAZY
OneToOne: EAGER
Run Code Online (Sandbox Code Playgroud)
在休眠中,一切都是懒惰的
来自Hibernate Docs,
默认情况下,Hibernate对集合使用延迟选择提取,对单值关联使用延迟代理提取.这些默认值对大多数应用程序中的大多数关联都有意义.
为了回答你的问题,Hibernate是JPA标准的一个实现.Hibernate有自己的操作怪癖,但根据Hibernate文档
By default, Hibernate uses lazy select fetching for collections and lazy proxy fetching for single-valued associations. These defaults make sense for most associations in the majority of applications.
Run Code Online (Sandbox Code Playgroud)
因此,无论您声明了什么类型的关系,Hibernate都将使用延迟提取策略加载任何对象.
JPA Spec假设通常大多数应用程序默认需要单例关系,而默认情况下多值关系是惰性的.
请参阅此处了解更多
| 归档时间: |
|
| 查看次数: |
24759 次 |
| 最近记录: |