在集群环境中休眠一级缓存

use*_*820 5 java hibernate java-ee

hibernate中的第一级缓存在会话对象上和同一JVM的边界内维护.它是hibernate使用的强制缓存.我担心它将如何在集群环境中管理它.多个节点将拥有自己的第一级缓存(等于会话数).在单个JVM中,一个实体可以是不同会话的一部分但是事务管理器,乐观锁定处理这种情况......但是我们如何在集群环境中管理它

1)可以在两个不同节点的第一级缓存中修改实体,从而导致陈旧数据问题,数据丢失问题.

2)如果我们使用乐观锁定....将很难恢复事务,并且它也会影响其他节点上的其他有用事务.

3)我们不能对每一笔交易采取悲观锁定.它会破坏hibernate缓存的实用性.

4)隔离级别的设置也不起作用,因为事务管理是由hibernate应用程序本身完成的,事务管理的边界是一个JVM.

cod*_*ent 1

第一级缓存不会产生过时的数据,我一直在集群环境中使用 JPA+Hibernate,没有任何与之相关的问题。重要的是事务的隔离级别。如果您不希望其他节点读取未提交的数据,请确保您至少在 READ_COMMITED 级别上工作。