缓存数据导致eclipselink jpa中的并发问题

缓存数据导致eclipselink jpa中的并发问题,jpa,caching,concurrency,eclipselink,Jpa,Caching,Concurrency,Eclipselink,我正在使用eclipseLink JPA,我正在为部署在两个不同服务器上的两个不同EJB应用程序使用相同的数据库。如果其他应用程序正在对同一对象进行某些修改,我会遇到由于JPA缓存而导致的并发性问题。是否有任何方法可以处理此并发问题。对数据库操作使用本机查询不是一个选项。我正在使用OracleDB和glassfish服务器。有什么解决办法吗。让我解释一下为什么会出现问题: 假设您已经缓存了对象的数据。因此,第一个应用程序将处理缓存的数据,并且不需要将此应用程序转到数据库(因为它在内存中已经有值)

我正在使用eclipseLink JPA,我正在为部署在两个不同服务器上的两个不同EJB应用程序使用相同的数据库。如果其他应用程序正在对同一对象进行某些修改,我会遇到由于JPA缓存而导致的并发性问题。是否有任何方法可以处理此并发问题。对数据库操作使用本机查询不是一个选项。我正在使用OracleDB和glassfish服务器。有什么解决办法吗。

让我解释一下为什么会出现问题:

假设您已经缓存了对象的数据。因此,第一个应用程序将处理缓存的数据,并且不需要将此应用程序转到数据库(因为它在内存中已经有值)。如果要在相同的
entityManager
上执行另一个修改查询,它可以升级缓存的数据。它无法知道另一个应用程序更改了数据的状态

所以隔离级别并没有帮助,因为第一个应用程序中并没有读取查询,因为它已经有了缓存值。就
entityManager
所知,只有来自同一个管理器的操作。它无法了解不同应用程序上的另一个
entityManager


解决方案是不缓存。或者,您可以将外部缓存配置为第二级缓存,您可以从两个应用程序(例如hazelcast缓存)中退出该缓存。

您有什么问题?是事务锁吗?或者只是由于缓存导致对象状态不一致?我在一个应用程序中将一条记录显示为列表,并且我从第二个应用程序更新了相同的记录,所以在列表中它显示的是相同的旧值。您对将隔离级别设置为序列化有何看法,这对缓存中不一致的数据会有帮助吗?@VickyRathee我编辑了答案,因为我更清楚你面临的是什么。