Nag*_*aga 25 java jpa entitygraph
我是JPA的新手,我正在尝试使用实体图.我意识到当我检索数据时,我需要指定我想要使用的EntityGraphType.
我阅读了JPA2.1规范,但我仍然不确定如何才能正确使用这两个选项...
问题是...
Tim*_*sen 38
我将首先回答你问题的第二部分.
当我需要使用Fetch和Load时,具体情况是什么?
在JPA中加载实体有两种主要方法,即预先加载和延迟加载.在急切加载时,实体在其父加载时立即加载.在延迟加载中,仅在调用该实体的实际getter时才加载实体.高性能应用程序往往偏向于延迟加载,因为在应用程序启动时使最终用户等待整个表,甚至是一组表加载都不是很好.现在谈谈你的第二个问题.
您FETCH可以通过导入javax.persistence.fetchgraph包含实体的文件来指定策略.在这种情况下,实体图中指定的所有属性都将被视为FetchType.EAGER,并且未指定的所有属性都将被视为FetchType.LAZY.另一方面,如果LOAD通过导入指定策略,javax.persistence.loadgraph则实体图中指定的所有属性也是,FetchType.EAGER但未指定的属性使用其指定的类型,如果实体未指定任何属性,则使用默认值.
如果我没有任何具体要求,我应该使用哪个选项?
话虽这么说,你不太可能没有特定的要求.至少,您需要Web应用程序快速运行.因此,您可能应该默认为延迟加载.使用FETCH图形是一个很好的选择,因为它默认为延迟加载,除非在您认为应该急切加载属性的少数特殊情况下.
这是一个很棒的博客的链接,它详细解释了所有这些,以及代码示例.
| 归档时间: | 
 | 
| 查看次数: | 9819 次 | 
| 最近记录: |