当前位置: 首页 > 知识库问答 >
问题:

用Spring事务管理点燃事务缓存

平和雅
2023-03-14

我正在探索Ignite事务性缓存。我已经有了一段代码,它对JDBC使用Spring事务管理。我想使用Spring缓存抽象在代码中集成ignite事务性缓存。

我遇到了SpringTransactionManager(由Ignite提供),但我无法找到正确的使用方法。本质上,我想做一些类似的事情:

@Transactional
@Cacheable(cacheNames="personcache", key="#person.id", unless="#result == null")
public Person create(Person person) {
    String queryPerson = "insert into Person (id, name) values (?,?)";
    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    jdbcTemplate.update(queryPerson, new Object[] { person.getId(), person.getName() });
    System.out.println("Inserted into Person Table Successfully");
    return person;
}

当事务提交时,数据库和缓存应该一起提交。为此,Ignite文档提到了使用SpringTransactionManager https://www.gridgain.com/sdk/pe/latest/javadoc/org/apache/Ignite/transactions/spring/SpringTransactionManager.html。

谁能给我指路吗?一个例子会很有帮助。谢了!

共有1个答案

仲孙铭
2023-03-14

如果为Spring提供SpringTransactionManager,它将围绕用@transactional注释的方法创建一个Ignite事务。首先,我相信在这种情况下甚至不会启动DB事务。即使这样,它也将独立于Ignite的。

我看到了两种解决方案:

  1. 使用JTA[1]配置Ignite,并使用JTatransactionManager,它也会知道DB事务。
  2. 而不是@cacheable,而是通过cacheStore[2][3]使用Integration Ignite with DB并使用write-through。在本例中,Ignite将负责事务一致性。
 类似资料:
  • 问题内容: 我刚刚开始使用spring和hibernate进行项目。我的DAO图层类扩展了HibernateDaoSupport。我们没有使用注释。之前,我们使用了struts,因此我们使用了Session类提供的getTransaction,commit,rollback ..方法。我的要求非常简单,对于所有DAO类,如果有异常,则回滚,否则提交。请提出介绍spring交易管理的最简单方法。 问

  • 我试图将Spring引导指南中的管理事务示例扩展到两个数据源,但是@事务注释似乎只适用于其中一个数据源。 在"Application.java"中,我添加了两个数据源及其Jdbc模板的bean。在"BookingService.java"中,我使用了属于第二个数据源的JdbcTemboard。 这是我的“Application.java”: 下面是“BookingService.java”: 这些

  • 17. 事务管理

  • 数据库的事务就是将任意多个SQL语句看作一个整体,只有这些SQL语句都成功执行,DBMS才会保存这些SQL语句对数据库的修改(事务提交)。否则,数据库将恢复到执行SQL语句之前的状态(事务回滚)。大多数DBMS都支持两种事务模式:隐式模式和显式模式。当执行每一条SQL语句时,无需进行事务提交,就可以直接将修改结果保存到数据库中。这叫做隐式事务模式。显式模式必须使用相应的语句或命令开起事务、提交事务

  • 主要内容:一、事务(Transaction),二、MySql中的应用,三、源码分析,四、总结一、事务(Transaction) 事务是什么?按照书上说的就是系统的一套操作为了保持数据的完整性必须符合ACID的特性,即原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、 持久性(Durability)。原子性比较好理解,操作要么全执行完成,要么全不执行完,实现这种方式就要支持回滚操作。而一致性指的是事务在改变状态时,要保证所有的访问得到的结果是相同的。一

  • 事务处理(transaction processing) 可以用来维护数据的完整性,保证SQL的操作要么完全执行,要么完全不执行,如果发生错误就进行撤销。 保证数据的完整性。 保证数据不受外影响。 事务处理的几道术语 事务(transaction) 一组SQL语句 退回(rollback)撤销执行SQL语句的过程 提交(commit) 将为执行的SQL语句写入数据库表 保留点(savepoint)