【发布时间】:2014-07-08 07:56:06
【问题描述】:
我正在 JSF 2.0 + Hibernate 作为 ORM 下开发一个 Web 应用程序。每次我不得不加载惰性集合时,我都厌倦了遇到问题,因此我找到了一种方法,该方法包括通过 DAO 类将集合中的 getter 方法 加载到我的 POJO 类 类中,如果这是PersistentBag 类的一个实例。
基本上是这样的:
public List<Entity> getLazyCollection()
{
if (this.lazyCollection instanceof PersistentBag)
{
this.lazyCollection = EntityDAO.findById(this.id);
}
return this.lazyCollection;
}
您认为这种方法的正确/错误程度如何?谢谢。
编辑:我没有说清楚。加载是在我的 POJO 类中完成的,而不是在 JSF Bean 中完成的。
【问题讨论】:
-
这是要在每次getter被命中时重新加载集合?
-
您要解决的具体问题是什么?
-
@EvanKnowles 我不这么认为,因为当为具体实例加载集合时,lazyCollection 成员的类是实际的 List
类,而不是休眠“代理”类 PersistentBag ,所以 if 检查失败并返回lazyCollection 成员。我遇到的问题是每次 Hibernate 尝试初始化 Lazy 集合时它都会失败,因为 Hibernate 会话已“关闭”。
标签: java hibernate jsf lazy-loading