M S*_*ach 5 java hibernate fetching-strategy
我已经通过net上的hibernate获取策略的一些链接.我喜欢的一个简短而简洁的链接是 http://www.mkyong.com/hibernate/hibernate-fetching-strategies-examples/.我们有四种类型的获取策略.这些是 :-
我的第一个问题是上述哪一个符合eager或lazyloading fetch类型的资格?
为了提出我对hibernate获取策略的疑问,我正在考虑在我的Department类中的下面的代码片段
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@Fetch(value = FetchMode.SELECT)
@BatchSize(size = 10)
private Set<EmployeeData> employees = new HashSet<EmployeeData>();
Run Code Online (Sandbox Code Playgroud)
根据我的理解,一旦我提到fetchtype为eager,我只留下了连接获取策略但是当我提到fetchtype作为lazyloading时,我还有其他三个选项,即select,batch-size和subselect.同意?现在,如果我在我的遗留项目中查看代码片段,它会将提取类型称为渴望和获取策略,因为select会相互冲突.对?
另一个问题是我在编写FetchMode时看不到批量大小选项.虽然我看到其他三种获取策略,但是在eclipse中控制+空间?
axt*_*avt 16
Hibernate集合具有获取类型和获取模式设置.
Fetch类型指定何时检索集合的元素,而fetch模式指定Hibernate 如何检索它们.
所以,FetchMode.SELECT和FetchMode.SUBSELECT有法律既FetchType.EAGER和FetchType.LAZY.不同之处在于,FetchType.EAGER立即执行额外的选择查询,而FetchType.LAZY在第一次访问集合后执行查询.
FetchMode.JOIN但是,没有意义FetchType.LAZY.
批量大小是一个额外的优化FetchMode.SELECT,因此它应该由它自己的注释(@BatchSize)配置,并且与FetchMode枚举本身无关.
也可以看看:
| 归档时间: |
|
| 查看次数: |
8325 次 |
| 最近记录: |