我有一个非常重要的问题,涉及有关共享公共(public)数据库的多个客户端同步的基本概念:
我计划使用 Java 和 JPA 来设计一个分布式应用程序以实现持久性。假设我有一个托管所有企业数据的中央数据库,并且多个客户端连接到该数据库以查询数据,那么保持特定客户端同步(通过数据库中的数据)的最佳方法是什么?
例如客户端 A 更新客户的姓氏,而客户端 B 已登录到数据库并已检索其持久性上下文。我如何通知客户B客户属性的变化?
JPA 是否有可能在持久上下文中测试实体的更改?或者我是否需要类似 JMS 的网络服务来通知所有 Activity 客户端数据库中的任何更改?
任何建议都非常感谢!提前致谢...
最佳答案
这取决于您是否希望 JPA 提供程序缓存数据。如果没有缓存,就不用担心,每次都会从数据库中检索数据。使用缓存,您将需要某种分布式缓存来确保客户端没有过时的数据。 您还没有提到您正在使用哪个 JPA 提供程序。 Eclipselink 包含其自己的分布式缓存实现,但请注意,您需要通过设置 CacheSessionCustomizer 来打开它。默认情况下,Eclipselink 将缓存最近的 100 个实体,因此,如果您不启用分布式缓存,则保证数据是过时的。 在 Hibernate 中,您可以使用 ehcache 之类的东西,但我自己没有使用过,所以无法对其进行太多评论。
关于java - 如何使用共享数据库(JPA)同步多个客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621308/