1. 问题
什么是已知的策略,从客户端延迟加载的解决方案?我正在检查这些东西http://wiki.eclipse.org/Introduction_to_EclipseLink_Sessions_(ELUG)#Remote_Sessions但不确定这是否是我的问题的解决方案或如何使用它。
2.用例
我正在开发一个三层应用程序,其中我的表示层(Eclipse RCP)是网络上的远程客户端:
[ Eclipse RCP ] <-----(RMI)-----> [ [EJB 3] [JPA 2] [Mysql] ]
现在,我使用JPA 实体作为我的域模型,我也想在我的客户端中使用它。我通过网络从@Session bean 获取实体。当我的 JPA 实体具有LAZY字段时,就会出现问题。在序列化之后,特别是因为我的 JPA 提供程序(EclipseLink)位于网络的另一端,我需要一个策略来从客户端加载那些 LAZY 字段。
我将有很多实体:可能有 30-40 个。典型的场景是当用户看到一个包含许多List
字段的SomethingModel列表时,这些字段不需要显示在列表中,只有当她想要更改特定元素时。
3. 可能的解决方案
我想出了一个解决方案,例如:我在客户端为我的 JPA 实体创建代理类。当我需要来自我的域模型的集合字段时,代理类将调用远程 EJB 来填充该字段。
class CarModelClient {
CarModel model;
public String getColor(){
model.getColor();
}
public List<Wheels> getWheels(){
CarModelFacadeRemote carFacade = //get my remote ejb
model.setWheels( carFacade.getWheels( model.getId() ) );
return model.getWheels();
}
}
嗯,类似的。
谢谢您的回答。