富客户端对象管理

时间:2012-06-28 11:22:07

标签: java swing jpa rcp entitymanager

我已经被这个困扰了很长一段时间了,希望有人可以对我有所了解。

在Swing / RCP等富客户端平台上,如何管理从数据库中检索的实体对象?

如果我不使用客户端/服务器体系结构,但让客户端直接连接到数据库,在JPA / EntityManager的帮助下,这非常有效。在这种情况下,UI上的所有实体对象都由EntityManager管理,它们之间的所有关系也得到很好的维护,JPA中的LazyInitialization Exception也没有问题,导致Client和EntityManager都在同一个JVM中。不会有同一实体的对象重复。

但是,如果我想将服务器与客户端分开,而客户端UI只处理从实体映射的DTO对象,那么让我很难让这些DTO对象同步。每个服务器请求都会创建新的DTO对象,即使它们代表相同的服务器端实体。客户端DTO的关系也非常脆弱。从同一实体的所有重复中不容易看出一个对象的变化。

是否有任何框架可以充当客户端EntityManager,或者可以在这种情况下工作的缓存机制?任何建议都将不胜感激!

此致 武

1 个答案:

答案 0 :(得分:0)

EclipseLink支持RemoteSession体系结构,该体系结构为远程客户端提供EclipseLink Session和UnitOfWork接口,并与服务器端会话进行通信。

在JavaEE和webservices回到胖客户端三层体系结构时代之前,这是一种流行的东西。它从那时起就没用过多少,目前也不支持JPA。现在大多数人都有Web客户端而不是胖客户端,或者似乎更喜欢通过DTO控制他们自己的客户端/服务器通信或使用XML,所以我不确定远程EntityManager是最好的架构。

您可以在EclipseLink上记录此功能的增强功能,因为扩展现有的RemoteSession并不难,或者您可以使用本机EclipseLink API。