我们可以将 Hibernate 与 Spring Web Flux 一起使用吗

Pra*_*mar 4 spring-boot spring-webflux

我是反应式编程的新手,我已经开始使用 webflux,之前我在 spring boot 上工作,我使用 hibernate 作为 ORM 框架。我的疑问是反应式堆栈中的 hibernate 被什么取代了,我必须使用哪个框架来连接和实现数据库逻辑。我正在使用 mongoDB。

提前致谢。

Iss*_*adi 11

你必须使用R2DBCHibernate reactive。如果您将旧服务从 spring boot 迁移到 webflux,我建议您使用Hibernate reactive.

当您使用R2DBC时,您不能使用hibernate映射和注释。

根据休眠响应文档

使用无状态会话时,您应该注意以下附加限制:

  • 持久化操作永远不会级联到关联的实例,
  • 对 @ManyToMany 关联和 @ElementCollections 的更改无法持久化,并且
  • 通过无状态会话执行的操作绕过回调。


Mac*_*iak 8

Hibernate 基于 JDBC。JDBC 是阻塞的。阻塞 API 在反应式堆栈中效果不佳。此外,Hibernate 在底层使用 ThreadLocals,这使得它更不适合反应式应用程序。

对于 Webflux,作为 Hibernate 的替代方案,您应该考虑Spring Data R2DBC,它执行基本数据库结果到 Java 对象的映射,但请记住,它不是像 Hibernate 那样的成熟 ORM。

您可能还想尝试一下Hibernate Reactive。这样,您就可以以反应式非阻塞方式使用 Hibernate 映射的强大功能。但有一件事行不通(至少目前还行不通),那就是使用@Transactional.