首页 > 解决方案 > 是否可以在单个 Spring Boot 应用程序中同时使用 Spring Data R2DBC 和 Spring Data JPA?

问题描述

我有一个使用 Spring data JPA 和 hibernate envers 进行数据库审计的应用程序。由于 R2DBC 还不支持审计,是否可以在单个应用程序中结合使用两者?

如果是,计划使用 Spring Data JPA 进行插入、更新和删除操作,这样所有的 DB 审计都将由 hibernate 环境处理。并使用 R2DBC 进行反应式非阻塞 API 来读取数据。

如果没有,是否有关于如何同时实现反应式 API 和审计的建议?

标签: spring-data-jpaspring-data-r2dbc

解决方案


  1. Spring 提供了简单的 Auditing via @EnableR2dbcAuditing请查看我的示例

  2. 在反应式应用程序中混合 JPA 也是可能的,我有一个示例来演示在反应式应用程序中运行 JPA,但没有在其中添加 r2dbc。

  3. 对于您的计划,更好的解决方案是在数据库拓扑上应用 cqrs 模式,为您的应用程序使用数据库集群。

    • JPA 用于应用更改,使用主/主数据库接受修改,并将更改同步到辅助/从数据库。
    • r2dbc 如您所愿进行查询,使用辅助/从属数据库进行查询。
    • 在前端使用网关进行查询和命令服务。

更新:我创建了一个示例来演示JPA 和 R2dbc 在单个 webflux 应用程序中的共存。但我不建议在实际应用中使用它。如果您真的需要,请考虑上面的第 3 个解决方案。


推荐阅读