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

使用jdbcTemplates使用@transaction注释进行spring事务回滚

訾晋
2023-03-14

下面是一个使用JdbcTemplate的示例。我的问题是,由于runTimeException,doMultipleCalls()在第3步失败,一切是否都会回滚。我只有对多个调用的事务注释,而没有对其他调用的注释。所有人是否共享同一个事务会话?。如果没有,那么如何跨多个服务器传递相同的事务会话?

@Component
public class MyRespository {

@Autowired
JdbcTemplate template

@Transactional
public void doMutlipleCalls() {
   callUpdate(); //1
   callInsert(); //2
   callDelete(); //3
}

callUpdate() {
  template.query(...)
}

callInsert() {
   template.query(...)
} 

callDelete() {
   template.query(..)
}

}

共有2个答案

樊令秋
2023-03-14

当您将Spring jdbc与transactional一起使用时,它的行为方式与jpa相同。您的操作包装在同一个事务下。

检查这篇文章。

凤明朗
2023-03-14

相同的事务会话是否在所有这些会话之间共享?

对事务在进入方法doMultipleCalls()之前开始,并在返回后完成。

 类似资料:
  • 根据我的理解,在methodB()中,我们使用someManager保存一个对象,并调用另一个函数callToSomeOtherServer()。所以这是上层方法中事务的一部分。如果callToSomeOtherServer()失败并抛出someException,整个事务应该回滚,保存的对象不应该在DB中反映。 但这对我不起作用,对象反映在DB中。有人能帮忙让我明白为什么它不起作用吗?

  • 为什么测试用例需要@Transactional,其功能将在dao层中进行更新(JPA存储库),比如 当测试在没有@Transaction注释的情况下运行时,它会在行中给出以下异常 组织。springframework。刀。InvalidDataAccessApiUsageException:执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException

  • 我对Spring交易非常陌生。由于我的组织使用的一些代码标准,我要求在调用任何方法时加入父事务(如果存在)。 我的应用程序是一个SpringMVC应用程序,有三层 Web层(控制器类) 服务层(包含业务逻辑的服务类) DAO Layer(数据库相关查询的DAO(数据访问层)类) 现在,在服务层上的一个方法中使用了dao层的三种不同方法。我使用@transactional将此服务方法注释为事务性的。

  • 主要内容:事务管理方式,事务管理器,TransactionStatus 接口事务(Transaction)是基于关系型数据库(RDBMS)的企业应用的重要组成部分。在软件开发领域,事务扮演者十分重要的角色,用来确保应用程序数据的完整性和一致性。 事务具有 4 个特性:原子性、一致性、隔离性和持久性,简称为 ACID 特性。 原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的动作要么都做要么都不做。 一致性(Consistency):事务必须保证数

  • 我正在使用Spring Boot和JDBCT模板开发一个用于数据库查询的应用程序。 问题是这样的:如果我必须在一个表上询问db,我没有问题。但是,如果我有一个join,我该如何执行这个任务? 更具体地说,创建表的SQL命令如下: 对应的java类如下: 约束是 firewall_Items.firewall_id = firewall.id(因此,这些是我必须用来执行 join 的变量)。 现在,

  • 上下文2。XML 这会导致将抽象类的transactionManager属性设置为服务器启动期间创建的最后一个注释事务方面bean'org.springframework.transaction.interceptor.TransactionAspectSupport。 因此,如果实例化的最后一个bean是dataSource1,则在dataSource1上创建事务,否则在DataSource2上