2017-01-05 108 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的)反應。