【发布时间】:2011-12-30 04:39:58
【问题描述】:
我使用 JPA 和 Hibernate 实现。对于有经验的 hibernate 用户来说,我的问题可能是基本的:基于 Hibernate 一级缓存编写查询的最有效方法是什么?
例如,我有实体A和实体B:
@Entity
class A{
private int ida;
private int x;
private String s;
@OneToMany(mappedBy = "ida", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<B> Bset;
}
@Entity
class B{
private int ida;
private String s2;
}
假设我有几个可能在同一个会话中发生的流程:
- 获取
A.x - 获取整个
A实体 - 检查
A是否包含B和s2="...";
对于这些查询中的每一个我都可以
- 编写特定查询,通过
ida和s2获取A.x/B或 - 假设Hibernate保存缓存并且总是得到
A对象,或者A.Bset()然后java循环在Bset()里面得到需要的B
什么是最有效的方法?
谢谢
【问题讨论】: