5

我目前有一个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 调用起初听起来很酷,但对于迁移和其他东西,可能会有点疯狂。

4

1 回答 1

7

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

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

那里有真假部分:

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

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

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

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

于 2019-01-28T19:20:11.717 回答