如何使用共享数据库(JPA)同步多个客户端?

时间:2012-03-08 16:38:49

标签: java jpa jms data-synchronization

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

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

E.g。当客户端B已经登录到数据库并检索到它的持久性上下文时,客户端A更新客户的姓氏。如何通知客户B有关客户资产的变化?

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

任何建议都非常感谢!提前谢谢......

1 个答案:

答案 0 :(得分:1)

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