是否可以控制模型外的EAGER / LAZY加载?

时间:2013-03-15 16:24:31

标签: java spring

我们正在使用Spring Framework,并且正在设置一个站点,该站点将通过jersey直接与应用程序的服务层进行通信。我们遇到了模型中的某些东西是延迟加载的场景(因为我们需要它们)但是我们希望能够在服务或dao中“翻转开关”告诉模型获取模型我们急切地想要写一堆代码来获取我们需要的关系。

这可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Criteria的{​​{1}}:

覆盖此内容
FetchMode

这会急切地加载 childs 属性集合,即使默认情况下它是懒惰的

答案 1 :(得分:0)

我不知道任何预先构建的东西会为你做这个并且不想谷歌搜索它,但我可以想象一个你可以编码的设置......

  • 您想要来回翻转的POJO的可加载界面......
  • 包装所有类槽的Slot类。 Slot可能有一个方法Slot.load(),它会告诉槽加载。本地,Slot会延迟加载。这个类可能需要很多时间和很多子类才能正确...
  • SlotLoader抽象类,其目的是告诉Slot何时加载。有抽象方法onAssign()。具有最终方法分配(插槽),用于将加载器分配给插槽并调用onAssign。
  • LazyLoader类实现SlotLoader。调用onAssign()时,什么都不做
  • EagerLoader类实现SlotLoader。当调用onAssign()时,调用slot.load()。

您想要来回切换的所有方法都需要重新编码以使用Slot包装其插槽,并且您的Spring配置需要知道是使用LazyLoader还是EagerLoader。