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

标签 java jpa jms data-synchronization

我有一个非常重要的问题,涉及有关共享公共(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/

相关文章:

java - BigInteger 内存泄漏导致 Java 中的堆栈溢出

java - 有没有办法在 JUnit 测试中使用 JMS?

java - 更改 remoteView 按钮的背景图像?

java - Criteria API 忽略 JOIN

jpa - 自 Java 10.0 NullPointer 在搜索持久性时 - JPA eclipselink 2.6.5

java - 如何在 Play! 中插入大量实体?工作?

grails - 在运行时更改ActiveMQConnectionFactory brokerURL在grails中

java - 是否可以以编程方式停止我的 MDB(消息驱动 Bean)在 jboss 服务器中监听 IBM mq?

java - 错误处理和效率?

java - 复合模式和 instanceof