我们希望在订单管理系统中使用 infinispan 作为内存数据库。在那里我们需要做以下类型的操作。这里的现金账户缓存包含从数据库加载的客户缓存账户。假设现金 account1 的初始余额为 1000,cashAccount2 为 2000。我们在 jboss 7.1 应用服务器的交易中更新两个现金账户。我们期望结果是两个现金账户的余额保持不变,因为此操作发生在交易内部。但不幸的是,即使在事务回滚之后,我们也可以在缓存中看到更新对象。但是我们要检查的是,当我们在事务中将对象添加到缓存中时,当事务回滚时,它将从缓存中删除。但是对现有对象的修改保持不变。
这只是我们想要做的一个示例。实际涉及在单个事务中更新多个对象。
您能否让我们知道可以使用 infinispan 进行此类操作。
cashAccountCache= provider.getCacheContainer().getCache(CACHE_NAME);
try {
utx.begin();
CashAccount cashAccount1 = cashAccountCache.get("cashAccNumber1");
CashAccount cashAccount2 = cashAccountCache.get("cashAccNumber2");
cashAccount1.setBalance( cashAccount1 .getBalance() + 100);
cashAccount2.setBalance( cashAccount2 .getBalance() + 200);
if(true) throw new RuntimeException();
utx.commit();
} catch (Exception e) {
if (utx != null) {
try {
utx.rollback();
} catch (Exception e1) {
}
}
}