0

我已经为此困扰了很长时间,希望有人能对我有所启发。

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

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

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

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

问候,吴东

4

1 回答 1

0

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

这在 JavaEE 和 web 服务之前很流行,在胖客户端三层架构时代。从那以后它就很少被使用,并且目前不支持 JPA。现在大多数人都有网络客户端而不是胖客户端,或者似乎更喜欢通过 DTO 或使用 XML 控制他们自己的客户端/服务器通信,所以我不确定远程 EntityManager 是最好的架构。

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

于 2012-06-28T14:04:27.270 回答