1

关于共享公共数据库的多个客户端的同步的基本概念,我有一个非常重要的问题:

我计划使用 Java 和 JPA 设计一个分布式应用程序以实现持久性。假设我有一个托管所有企业数据的中央数据库,并且多个客户端连接到该数据库以查询数据,那么保持特定客户端同步(通过数据库中的数据)的最佳方法是什么?

例如,客户端 A 更新客户的姓氏,而客户端 B 已经登录到数据库并检索了它的持久性上下文。我如何通知客户 B 客户属性的变化?

JPA 中是否有可能在持久上下文中测试实体的变化?或者我是否需要一个类似于 JMS 的网络服务来通知所有活动客户端数据库中的任何更改?

任何建议高度赞赏!提前致谢...

4

1 回答 1

1

这取决于您是否希望 JPA 提供程序缓存数据。没有缓存就没什么好担心的,每次都会从数据库中检索数据。使用缓存,您将需要某种分布式缓存来确保客户端没有过时的数据。您还没有提到您使用的 JPA 提供程序。Eclipselink 包含自己的分布式缓存实现,但请注意,您需要通过设置 CacheSessionCustomizer 来打开它。默认情况下,Eclipselink 将缓存最近的 100 个实体,因此如果您不启用分布式缓存,则保证您的数据是陈旧的。使用 Hibernate,您可以使用 ehcache 之类的东西,但我自己没有使用过,所以不能对此发表太多评论。

于 2012-03-08T17:33:54.297 回答