2017-01-05 78 views
6

是否可以使用Hibernate和Mysql与ReactiveCrudRepository而不是CrudRepository?我已经尝试了Spring Data Jpa和Hibernate的一些示例,但无法使其工作。我只能在ReactiveCrudRepository的MongoDB和Casendra上找到几个样本。ReactiveCrudRepository在春季使用Hibernate

+0

欢迎来到StackOverflow。你的问题有点宽。请查看帮助页面,特别是如何发布您尝试过的[最小完整和可验证的示例](http://stackoverflow.com/help/mcve),以便您的问题更具针对性。 – hotzst

回答

10

是否可以使用Hibernate和Mysql与ReactiveCrudRepository而不是CrudRepository

截至目前(2017年1月),这是不可能的。

春季数据的反应部分当前相关版本是Spring Data Kay M1(您可以检查是否有可用的更新版本on the project home page)和

从Spring数据团队关于发布和专门的博客文章(重点是我的):

Spring Data Kay M1是第一个支持反应式数据访问的发行版。它的初始套件支持商店 - MongoDB,Apache Cassandra和Redis - 所有已发货的被动式驱动程序,这使得它们非常适合这种原型。

原因是没有标准的非阻塞方式来访问关系数据库。所以现在只支持那些支持这种类型的API。

可以使用JPA或JDBC实现ReactiveCrudRepository并将工作委托给线程池。这将在外部提供一个异步API,但仍会消耗线程的资源并在独立数据访问之间阻塞,因此只能实现被动方法的一小部分好处。

+0

,真的谢谢你回复 –

+0

现在的任何消息已经过去了一年? :) – dSebastien

+0

@dSebastien不是真的,但现在有https://github.com/spring-projects/spring-data-jdbc最终可能得到反应支持。 异步数据库访问API也有活动。你可以在邮件存档中阅读关于它的讨论http://mail.openjdk.java.net/mailman/listinfo/jdbc-spec-discuss –

0

据前面的回答报价

人们可以实现使用JPA或JDBC和委托的工作线程池ReactiveCrudRepository。这将在外部提供一个异步API,但仍会消耗线程的资源并在独立数据访问之间阻塞,因此只能实现被动方法的一小部分好处。

詹姆斯沃德声称它可以是非阻塞的。我的意思是我问他:

是的好吧,但是不是ScalikeJDBC-Async做的完全一样吗?只是将查询调用放入另一个线程池中?

,他回答说

没有因为ScalalikeJDBC-异步使用https://github.com/mauricio ...这实际上是非阻塞(NIO)JDBCish数据库驱动程序。

source

所以,你可以通过与PostgreSQL相关的异步更换休眠+春数据(应该使用MySQL的)反应。