我有一个spring应用程序,它使用spring-data来访问数据库。现在,还有另一个应用程序,需要仅使用Hibernate / JPA访问数据来更新同一数据库。
如果我从APP2更新数据,则它们将不会通过spring-data在APP1中可见,因为基础EntityManager不会被刷新。
是否有任何现成的解决方案如何提供此功能?显然,我能想到的是:
由于要重构APP1,我想避免第一种选择。我不确定秒数将如何工作,即:
答案 0 :(得分:0)
您可以将spring-data-hazelcast与Mapstore API一起使用。这对您的应用程序影响最小,但需要Mapstore实施。如果您选择在嵌入式模式下使用hazelcast,则可能会更好,因为您不必管理单独的中央缓存。 Hazelcast可根据您的应用程序需求进行扩展/扩展
答案 1 :(得分:0)
经过一番挖掘和测试之后,我实际上发现,Spring数据与Hibernate一起可以正确处理这种情况。
我已经基于纯Hibernate / JPA进行了测试,并且当使用两个EntityManager时,正确地我没有看到其中一个所做的更改(在构建过程中我将EntityManager创建为服务类成员) 。但是,spring-data的作用是,它会为每次@Transactional方法的调用打开一个新的Hibernate Session,并在完成后将其关闭。
问题在于特定的业务逻辑,因为它取决于@Transactional方法的上下文,如果可以的话,可以在方法调用期间“可能”使用过时的数据。