jakarta-ee - 如何将多个 spring-data 应用程序与共享数据库一起使用

标签 jakarta-ee redis spring-data hazelcast distributed-caching

我有一个 spring 应用程序,它使用 spring-data 来访问数据库。现在还有另一个应用程序,它需要仅使用 Hibernate/JPA 来访问数据来更新同一个数据库。

如果我从 APP2 更新数据,它们将不会通过 spring-data 在 APP1 中可见,因为底层的 EntityManager 不会被刷新。

是否有任何开箱即用的解决方案来提供此功能?显然,我能想到的是:

  • 创建一个通用的 REST 层来提供这些操作
  • 共享分布式缓存,如 Hazelcast、Redis

我想避免第一个选项,因为需要重构 APP1。我不确定第二个是如何工作的,即:

  • APP1 和 APP2 之间的共享对象将存储在分布式缓存中,并始终从那里读取。
  • 更新将通过相应的访问层执行 - APP1 将使用其 spring-data 存储库,APP2 将使用其 Hibernate/JPA 服务(但是,EntityManager 仍不会因来自其他应用程序的可能更改而更新)。

最佳答案

您可以使用 spring-data-hazelcastMapstore API .这对您的应用程序的影响最小,但需要 Mapstore 实现。如果您选择在嵌入式模式下使用 hazelcast,那可能会更好,因为您不必管理单独的中央缓存。 Hazelcast 根据您的应用程序要求向外扩展/向内扩展

关于jakarta-ee - 如何将多个 spring-data 应用程序与共享数据库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55335674/

相关文章:

redis - Spring Data Redis - 支持命令 PUBSUB CHANNELS

java - 在Spring中,有没有办法为 header 返回不同的Content-Type值?

java - 为什么我们在使用 struts 1.x 时在 web.xml 中写 <load-on-startup>2</load-on-startup>?

java - Log4j2 Servlet 3.0 不记录

redis - 一个redis INFO : -ERR wrong number of arguments for 'info' command

java - 使用 Spring Data 和 Hibernate 的 Spring MVC 分页

servlets - 有没有办法创建一个具有两个 url 路径的 servlet?

c# - 如何使用 StackExchange.Redis 进行基本 WATCH

javascript - 使用 promises 在 Node.js 中重写 Redis 调用

spring - 为什么以及何时在 Spring 中使用 @Inject 而不是 @Autowired?