如何在 Vert.x 中使用 Hibernate 作为非阻塞 ORM

Ale*_*lls 5 java hibernate vert.x vertx-verticle

我目前有一个 Vert.x代码库。我正在使用 Golang,但 Golang 有点糟糕,而且没有一个好的 ORM。但显然,Vert.x 也没有很好的 ORM,主要是因为 Vert.x 是非阻塞的,而且大多数 Java 的 ORM 都是基于阻塞 API 的。

无论如何,我有一个具体问题 - 我读到 Hibernate/JPA 可以与 Vert.x 一起使用 - 我们可以做的是将 Hibernate 调用放在不同的 Verticle 中,然后它将是非阻塞的。

这是一个好主意吗?有人可以展示一个使用 2 个不同的 Vert.x verticles 做这件事的例子吗?

如果这不是一个好主意,那么使用什么 ORM 是好的?裸 SQL 调用一开始听起来很酷,但对于迁移和其他东西,可能会有点疯狂。

Ale*_*hin 7

@tsegismont,正如他通常所做的那样,已经在评论中提供了一个很好的解决方案。我想澄清以下句子:

我读到 Hibernate/JPA 可以与 Vert.x 一起使用 - 我们可以做的是将 Hibernate 调用放在不同的 Verticle 中,然后它将是非阻塞的

那里有真假两部分:

Hibernate/JPA 可以与 Vert.x 一起使用

真的。通过将阻塞代码放在工作垂直中,您不会阻塞 Vert.x 事件循环,这允许基于 JDBC 的框架与 Vert.x 一起使用

将 Hibernate 调用放在不同的 Verticle 中,然后它将是非阻塞的

错误的。你不会让 Hibernate 成为非阻塞的。JDBC 本质上是阻塞的,并且没有什么可以解决这个问题(尽管R2DBC是一个很好的举措)。您将使用之前使用的相同线程池,但具有相同的限制。