我目前有一个Vert.x
代码库。我使用的是Golang,但是Golang有点烂,并且没有很好的ORM。但是显然,Vert.x也不具有良好的ORM,这主要是因为Vert.x是非阻塞的,并且大多数Java的ORM都是基于阻塞的API。
无论如何,我有一个具体的问题-我读到Hibernate / JPA可以与Vert.x一起使用-我们可以做的是将Hibernate调用放在另一个Verticle中,然后将其变为非阻塞。
这是个好主意吗?有人可以举例说明使用2个不同的Vert.x顶点吗?
如果这不是一个好主意,那么使用什么ORM可能是个好主意?最初,赤裸裸的SQL调用听起来很酷,但是对于迁移和填充而言,可能有点疯狂。
答案 0 :(得分:2)
@tsegismont已经在评论中提供了一个很好的解决方案。我只想澄清以下一句话:
我读到Hibernate / JPA可以与Vert.x一起使用-我们可以做的是将Hibernate调用放在另一个Verticle中,然后将其变为非阻塞状态
其中有一个真实的部分和一个错误的部分:
Hibernate / JPA可以与Vert.x一起使用
是的。通过将阻止代码放在工作程序垂直目录中,您不会阻止Vert.x事件循环,并且这允许基于JDBC的框架与Vert.x一起使用
将Hibernate调用放到另一个Verticle中,然后它将是非阻塞的
错。您不会使Hibernate成为非阻塞。 JDBC本质上是阻塞的,并且解决该问题的工作量不大(尽管R2DBC是一个不错的计划)。您将使用以前使用的相同线程池,但有相同的限制。