Как использовать Hibernate в качестве неблокирующего ORM с Vert.x - PullRequest
0 голосов
/ 27 января 2019

У меня в настоящее время есть Vert.x кодовая база. Я использовал Golang, но Golang вроде отстой и не имеет хорошего ORM. Но, очевидно, Vert.x также не имеет хорошего ORM, в первую очередь потому, что Vert.x неблокирующий, а большинство ORM для Java основано на API-интерфейсах блокировки.

Во всяком случае, у меня есть конкретный вопрос - я читал, что Hibernate / JPA можно использовать с Vert.x - что мы могли бы сделать, это поместить вызовы Hibernate в другой Verticle, и тогда он будет неблокирующим.

Это хорошая идея? Может кто-нибудь показать пример того, как сделать это с двумя разными vert.x статьями?

Если это не хорошая идея, что может быть хорошим ORM для использования? Голые вызовы SQL на первый взгляд звучат круто, но для переносов и других вещей это может показаться сумасшедшим.

1 Ответ

0 голосов
/ 28 января 2019

@ tsegismont, как он обычно делает, уже предоставил хорошее решение в комментариях. Я хотел бы просто уточнить следующее предложение:

Я читал, что Hibernate / JPA можно использовать с Vert.x - мы можем поместить вызовы Hibernate в другой Verticle, и тогда он будет неблокирующим

Там есть истина и ложь:

Hibernate / JPA может использоваться с Vert.x

True. Помещая блокирующий код в рабочую вертикалку, вы не блокируете цикл событий Vert.x, и это позволяет фреймворкам на основе JDBC работать с Vert.x

поместите вызовы Hibernate в другой Verticle, и тогда он будет неблокирующим

Ложные. Вы не делаете Hibernate неблокирующим. JDBC по своей природе блокирует, и мало что можно сделать, чтобы решить эту проблему (хотя R2DBC - хорошая инициатива). Вы будете использовать тот же пул потоков, который вы использовали ранее, с теми же ограничениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...