2011-05-26 32 views
1

这是我想要在Swing应用程序中执行的操作的说明。有没有一种干净的方式让Hibernate能够在Swing中进行延迟初始化?

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

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

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

所以,我的问题是,有更好/更干净的方式来做到这一点,通过使用延迟加载?

希望这不是太混乱:)

谢谢!

回答

4

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

+0

嗨。首先,感谢您的回复。 请您详细说明“重新连接客户端对象”是什么意思? – ktulinho 2011-05-26 20:29:05

+0

请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#objectstate-overview和http://docs.jboss.org/hibernate/core/3.6/reference/ en-US/html_single /#objectstate-detached – 2011-05-26 20:38:49

+0

谢谢,我会试试这个! – ktulinho 2011-05-26 22:29:33

相关问题