是否可以在单个 Spring 启动应用程序中同时使用 Spring Data R2DBC 和 Spring Data JPA?
Is it possible to use both Spring Data R2DBC and Spring Data JPA in a single Spring boot application?
我有一个应用程序正在使用 Spring data JPA 和 hibernate envers 进行数据库审计。
由于 R2DBC 尚不支持审计,是否可以在单个应用程序中使用两者的组合?
如果是,计划使用 Spring Data JPA 进行插入、更新和删除操作,以便所有 DB 审计都将由 hibernate envers 处理。并使用 R2DBC 进行反应性非阻塞 API 来读取数据。
如果否,是否有任何关于如何实现响应式 API 和审计的建议?
Spring 通过 @EnableR2dbcAuditing
、check my example.
提供了简单的审计
在反应式应用程序中混合 JPA 也是可能的,我有 an example 在反应式应用程序中演示 运行 JPA,但没有在其中添加 r2dbc。
对于您的计划,更好的解决方案是在数据库拓扑上应用 cqrs 模式,为您的应用程序使用数据库集群。
- 应用修改的JPA,使用main/master数据库接受修改,同步修改到secondary/slave数据库。
- r2dbc查询如你所料,使用secondary/slave数据库查询。
- 在前端使用网关进行查询和命令服务。
更新:我创建了一个示例来演示JPA and R2dbc coexistence in a single webflux application。但我不建议在 real-world 应用程序中使用它。如果您确实需要,请考虑上面的第三种解决方案。
是的,这是可能的,但是您可能会遇到两个问题,一个是需要明确处理多个回购模块(例如,指定各个模块的路径)。
其次,JDBC/JPA Spring 引导自动配置将被禁用,您需要将其导入回来。
Reactive and Non Reactive repository in a Spring Boot application with H2 database 中报告了这些问题
在这个问题中可以找到解决它们的方法和思考过程:
https://github.com/spring-projects/spring-boot/issues/28025
我有一个应用程序正在使用 Spring data JPA 和 hibernate envers 进行数据库审计。 由于 R2DBC 尚不支持审计,是否可以在单个应用程序中使用两者的组合?
如果是,计划使用 Spring Data JPA 进行插入、更新和删除操作,以便所有 DB 审计都将由 hibernate envers 处理。并使用 R2DBC 进行反应性非阻塞 API 来读取数据。
如果否,是否有任何关于如何实现响应式 API 和审计的建议?
Spring 通过
提供了简单的审计@EnableR2dbcAuditing
、check my example.在反应式应用程序中混合 JPA 也是可能的,我有 an example 在反应式应用程序中演示 运行 JPA,但没有在其中添加 r2dbc。
对于您的计划,更好的解决方案是在数据库拓扑上应用 cqrs 模式,为您的应用程序使用数据库集群。
- 应用修改的JPA,使用main/master数据库接受修改,同步修改到secondary/slave数据库。
- r2dbc查询如你所料,使用secondary/slave数据库查询。
- 在前端使用网关进行查询和命令服务。
更新:我创建了一个示例来演示JPA and R2dbc coexistence in a single webflux application。但我不建议在 real-world 应用程序中使用它。如果您确实需要,请考虑上面的第三种解决方案。
是的,这是可能的,但是您可能会遇到两个问题,一个是需要明确处理多个回购模块(例如,指定各个模块的路径)。
其次,JDBC/JPA Spring 引导自动配置将被禁用,您需要将其导入回来。 Reactive and Non Reactive repository in a Spring Boot application with H2 database 中报告了这些问题 在这个问题中可以找到解决它们的方法和思考过程: https://github.com/spring-projects/spring-boot/issues/28025