我已经为此困扰了很长时间,希望有人能对我有所启发。
在 Swing/RCP 等富客户端平台上,如何管理从数据库中检索到的实体对象?
如果我不使用客户端/服务器架构,而是让客户端直接连接到数据库,那么在 JPA/EntityManager 的帮助下,效果会很好。在这种情况下,UI 上的所有实体对象都由 EntityManager 管理,它们之间的所有关系也都维护得很好,JPA 的 LazyInitialization Exception 也没有问题,因为 Client 和 EntityManager 在同一个 JVM 中。不会有具有相同实体的对象重复。
但是,如果我想将服务器与客户端分开,并且客户端 UI 只处理从实体映射的 DTO 对象,那么让这些 DTO 对象同步让我很头疼。每个服务器请求都会创建新的 DTO 对象,即使它们代表相同的服务器端实体。客户端DTO的关系也很脆弱。从同一实体的所有重复中不容易看出一个对象的变化。
是否有任何框架可以充当客户端 EntityManager,或者可以在这种情况下工作的缓存机制?任何建议将不胜感激!
问候,吴东