A few small suggestions. Vert.x web Router has a 'blockingHandler' so that you don't need the extra calls to 'executeBlocking', and therefore have simpler code. Secondly, you can pass the instance of EntityManagerFactory to your verticles in a constructor and use it in any of your code as long as it is declared 'final'. Finally, you could have a 'Main class which starts your Vert.x app by calling 'Vertx.vert()' and do your blocking configuration (Hibernate/LiquiBase/etc...) before you deploy your first Verticle.
Good work and nice write up! But the end result compared to what you'd get with Spring repositories and annotations is much more cluttered. I understand that you went down this path until Spring 5 stable is released but when that happens I don't see any reason someone would go with vertx+hibernate instead of that.
Max Little
Coder and Cyclist
Very informative. Thanks for writing this. :)