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

时间:2019-01-27 02:54:02

标签: 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顶点吗?

如果这不是一个好主意,那么使用什么ORM可能是个好主意?最初,赤裸裸的SQL调用听起来很酷,但是对于迁移和填充而言,可能有点疯狂。

1 个答案:

答案 0 :(得分:2)

和他平常一样,

@tsegismont已经在评论中提供了一个很好的解决方案。我只想澄清以下一句话:

  

我读到Hibernate / JPA可以与Vert.x一起使用-我们可以做的是将Hibernate调用放在另一个Verticle中,然后将其变为非阻塞状态

其中有一个真实的部分和一个错误的部分:

  

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

是的。通过将阻止代码放在工作程序垂直目录中,您不会阻止Vert.x事件循环,并且这允许基于JDBC的框架与Vert.x一起使用

  

将Hibernate调用放到另一个Verticle中,然后它将是非阻塞的

错。您不会使Hibernate成为非阻塞。 JDBC本质上是阻塞的,并且解决该问题的工作量不大(尽管R2DBC是一个不错的计划)。您将使用以前使用的相同线程池,但有相同的限制。