花岗岩中的延迟加载

我将如何使用延迟加载在Flex应用程序中加载我的实体。我有一个深度对象图     
已邀请:
GraniteDS及其数据管理框架允许您透明地加载未启动的关联:请参阅此处的文档。所以,基本上,你不需要做任何特殊的事情来初始化你的懒惰集合/代理,你只需要在客户端访问其中一个(例如询问集合的大小)它会触发调用服务器并获取未初始化的数据。 如果您不想或不能使用透明延迟加载,则需要编写一个特定的初始化方法,该方法必须能够访问EntityManager,接收您的实体作为参数,初始化所需的关联并将实体发送回客户。     
AFAIK这是不可能的。您应该打开hibernate会话来执行此操作。 在我的项目中,我正在以这种方式做你需要的事情: 我有这样的春季服务:
public interface SomeObjectManager {
   List<SomeObject> getObjects();     // here we have lazy loading for SomeObject's properties
   SomeObject getFullObject(long objectId); // here we're loading full object
}
SomeObject的某些属性使用延迟加载。要加载它们我使用HQL查询,如下所示:
SELECT s FROM SomeObject s
   LEFT JOIN FETCH s.child children
      LEFT JOIN FETCH children.items items
         LEFT JOIN FETCH items.property
WHERE s.id=:id
此查询强制hibernate加载定义为lazy的属性。 因此,如果您不需要完全加载SomeObject实例,则使用getObjects()方法。如果那时你需要具体的SomeObject实例的细节,你使用getFullObject()方法。 希望这可以帮助。     

要回复问题请先登录注册