10

如何禁用休眠中的延迟加载?我正在使用持久性注释,而不是hbm xml文件。在休眠中禁用延迟加载

我通过ID获取单个对象,并希望加载所有属性。会话在我使用该对象之前关闭。

谢谢!

+0

我除了这个问题:我如何才能在不是代理,空集将出现的方式禁用延迟加载? – 2013-01-22 01:59:31

回答

5

你需要注释,你想不懒加载FetchType.EAGER

@ManyToOne(fetch = FetchType.EAGER) 

你看属性,它不是你加载是懒加载的对象。相反,该对象的关联是懒惰的,如果这是你想要的行为,你需要告诉他们不要这样做。

如果这些对象也有想要加载的关联,则还需要对它们进行注释。

1

您可以指定fetch = FetchType.EAGER上所有的相关项目,递归,但这将加载数据的一大堆你可能不感兴趣的内容。

它通常是一个更好的解决方案,至少让所有的一对多和多对多协会到LAZY(这是默认值),并在关闭会话之前对它们进行初始化,如果您的用例需要它们(甚至用临时查询加载它们)。

默认情况下,OneToOne和ManyToOne关联是EAGER,并且这通常会产生太多的请求。我通常更喜欢将所有的用例标记为懒惰,除非所有的用例都需要获取关联。