如何使用传统的数据库框架在 Spring WebFlux 中优雅地管理事务?

How to elegantly manage transactions in Spring WebFlux with traditional database frameworks?

提问人:zy_sun 提问时间:11/17/2023 最后编辑:Mark Rotteveelzy_sun 更新时间:11/17/2023 访问量:20

问:

如何在 Spring WebFlux 中使用传统的阻塞数据库框架框架(如 JDBC、JPA 和 MyBatis)优雅地管理事务?

Spring Data R2DBC 的一些功能不是很好,所以我不得不使用传统的数据库框架。虽然@Transactional注解现在可以在 WebFlux 中使用,但有时它在链调用中不起作用。无法与 R2DBC 等运营商完成交易。

有没有简单的方法可以封装手动交易以支持单链调用中的交易?例如:

Mono<OrderInner> monoFromCallable = Mono.fromCallable(() -> {
    orderInnerService.saveTest(new Order("id01"));
    return entity;
});

Mono<OrderInner> mono2fromCallable = Mono.fromCallable(() -> {
    orderInnerService.saveTest(new Order("id02"));
    return entity;
});

//Transactional:
return monoFromCallable
        .then(mono2fromCallable)
        .as(transactionalOperator::transactional);
java reactor spring-data-r2dbc

评论


答: 暂无答案