springboot启用事务@EnableTransactionManagement()
service层方法开启事务@Transactional
此时方法里面如果有geode保存更新操作,就算是异常,关系数据库可以回滚,而geode是不会回滚的,这个事务并没有代理到geode的事务,此时需要自己开始一下geode的事务
CacheTransactionManager ct=gemfireCache.getCacheTransactionManager();
try {
/ ct.begin();//geode缓存事务要单独开启暂时没发现能与springboot的事务结合,持久化的region不能用这个开启事务
userInfoRepository.save(userInfo);
UserInfo info=new UserInfo();
info.setId(userInfo.getId());
info.setName("name"+info.getId());
info.setAge(18);
userInfoMapper.insertSelective(info);
Region r=gemfireCache.getRegion("region");
r.put("test"+userInfo.getId(), "a"+userInfo.getId(),10);
if("".equals("")) {
//throw new RuntimeException("新异常啦1");
}
ct.commit();
} catch (Exception e){
ct.rollback();
e.printStackTrace();
throw e;
}finally {
}
此时如果里面抛出异常就两者都 会回滚了