有没有一种干净的方法让Hibernate在Swing中使用延迟初始化?

时间:2011-05-26 20:20:11

标签: java hibernate swing lazy-loading

以下是我想在Swing应用程序中执行的操作的说明。

所以,想象一下我有一个对象Client,里面有一些集合。 在应用程序启动时,我想只加载对象Client并在表中显示其基本属性(如名称,年龄等)。稍后,当用户想要时,我想加载完整的客户端(集合)。

当我尝试使用Hibernate延迟加载客户端时,由于尝试在加载客户端的原始会话之外加载这些对象,我遇到了一些问题。

我正在网上搜索一个干净/简单的方法来做到这一点,但最后我最终做了一个我不太自豪的黑客: 基本上我重构了Client的基本属性并创建了一个ClientDetails类。在客户端我现在有一个ClientDetails。所以在启动时我只加载ClientDetails然后在必要时加载Client,它将再次加载ClientDetails。这将使我必须更新第一次加载的原始ClientDetails的引用(这很麻烦)。

所以,我的问题是,使用延迟加载是否有更好/更清晰的方法来实现这一点?

希望这不会太混乱:)。

谢谢!

1 个答案:

答案 0 :(得分:4)

您应该加载Client对象,关闭加载它的Session,然后当您想要显示该集合时,打开另一个Session重新连接 Client对象。