Hibernate OnDemand eager-fetch

时间:2012-10-24 11:12:14

标签: hibernate lazy-loading

我了解如何配置我的模型以获取渴望或懒惰。 但是,我应该如何告诉我的应用程序此时急切地收集一个集合呢?

换句话说。我有一个带get-method的DAO。 EntityDao.getEntity(entityId) 此实体的集合Children默认为延迟加载。

让我们说dao-method是事务性的。

大多数时候我只需要没有孩子的实体,但每隔一段时间我就需要急切地抓住孩子。现在我该怎么做?

如果我理解这一切都是正确的,那么会话只存在于交易中。因此,在事务结束后(在这种情况下,在dao方法之后),不再需要进行延迟读取。 那么我可以将我的事务放在我的代码中,或者在事务中急切地获取我的对象吗?

那么我如何在我的交易中进行这种渴望获取呢?

我有什么选择?

2 个答案:

答案 0 :(得分:1)

您应该使用hibernate的获取配置文件功能参考doc以获取更多详细信息,并example

答案 1 :(得分:-1)

你不应该在dao中进行交易。交易应该涵盖整个业务运营,这是交易的意义。

您还会破坏延迟加载。它应该对调用者是透明的,当会话仍然可用并且访问子节点时加载子节点就是这种情况。关闭会话后,懒惰加载不再可能,应该访问实体。