问题描述
|
这是我要在Swing应用程序中执行的操作的描述。
因此,假设我有一个对象Client,里面有一些集合。
在应用程序启动时,我只想加载对象Client并在表中显示其基本属性(如名称,年龄等)。稍后,当用户需要时,我想加载完整的Client(集合)。
当我尝试使用Hibernate延迟加载客户端时,由于尝试在加载客户端的原始会话之外加载这些对象而遇到了一些问题。
我在网上搜索一种干净/便捷的方法来完成此操作,但最终我还是做了一个我并不十分自豪的黑客:
基本上,我从Client重构了基本属性,并创建了一个ClientDetails类。在客户端中,我现在有一个ClientDetails。因此,在启动时,我仅加载ClientDetails,然后在必要时加载Client,这将再次加载ClientDetails。这将使我不得不更新第一次加载的原始ClientDetails的引用(这很麻烦)。
所以,我的问题是,有没有更好/更干净的方法可以通过使用延迟加载来做到这一点?
希望这不会太令人困惑:)
谢谢!
解决方法
您应该加载
Client
对象,关闭加载它的Session
,然后在要显示集合时,打开另一个Session
并将re0ѭ对象重新连接到该对象。