Hibernate引入響應性Reactive支援
響應式程式設計使我們能夠利用非阻塞IO來減少程式中的資源使用。長期以來,非阻塞IO並不是與關聯式資料庫進行互動的程式的選擇,因為JDBC和ODBC等資料訪問API都是基於基本同步的阻塞模式設計的。
最近,情況發生了變化,例如 針對PostgreSQL,MySQL,Db2和SQL Server的Vert.x客戶端API以及其他類似專案。因此,Java程式現在可以以完全非同步,非阻塞的方式與關聯式資料庫進行互動。
此外,諸如Mutiny之類的API使用流而不是巢狀的回撥簡化了響應式程式設計,從而至少減輕了Java非同步程式設計的痛苦。
但是當然可以回溯到2006年,當我們設計Java永續性API來簡化Java中的ORM並統一當時存在的ORM實現時,“反應式程式設計”並沒有受到任何關注。因此,JPA從根本上阻止了自然支援,“反應式ORM”是根本不存在的。
因此,今天我們向社群介紹Hibernate Reactive,這是Hibernate ORM的反應式API,它支援非阻塞資料庫客戶端和反應式程式設計,作為與關聯式資料庫進行互動的範例。
Hibernate Reactive重用了Hibernate ORM的大部分實現,但是用圍繞響應流設計的新層替換了與JDBC互動的程式碼,並向程式設計師公開了一個新的響應SessionAPI。
實際上,有兩種反應式SessionAPI,一種用於使用Mutiny的程式,另一種用於使用Java的程式CompletionStage。
// Mutiny-based API factory.withTransaction( // retrieve a Book (session, tx) -> session.find(Book.class, bookId) // delete the Book .chain(book -> session.remove(book)) ) |
自然,我們儘可能地避免使用JPA和Hibernate ORM,包括 OR對映註釋,基本永續性操作的命名和語義 以及調整效能的選項。JPA和Hibernate的使用者甚至都熟悉大多數配置屬性。
如果您以前使用過Hibernate,並且還對響應式流進行過一些程式設計,則應該立即使用Hibernate Reactive。如果您從未使用過Hibernate,或者從未使用過反應式程式設計,那麼這是學習新知識的機會,我們將為您提供幫助!
無論哪種情況,您的最佳出發點都是我們的 《 Hibernate Reactive簡介》。
Hibernate Reactive僅在端到端反應技術堆疊的情況下才真正有用。因此,我們當然要確保它可以與Vert.x一起使用,並且可以直接整合到其他平臺中。
但是這裡令人興奮的訊息是,我們還將其與Quarkus的新反應式API整合在一起,我們將很快宣佈。我們的目標是為Java開發人員提供最舒適,最熟悉的方式,使其過渡到反應式程式設計模型。
在以後的文章中,我們將更多地討論Quarkus中的響應資料訪問。
我們也正在努力擴充套件此受支援的資料庫列表。當前,僅支援PostgreSQL,MySQL和Db2,但我們希望很快引入對SQL Server的支援。
相關文章
- Hibernate Reactive 簡介React
- Reactive Spring實戰 -- 響應式Kafka互動ReactSpringKafka
- Reactive Spring實戰 -- 響應式MySql互動ReactSpringMySql
- Reactive Spring實戰 -- 響應式Redis互動ReactSpringRedis
- Vue3響應式原始碼分析 - reactive篇Vue原始碼React
- Backpressure in Reactive Systems 響應式系統的反壓React
- Vue3響應式系統api 之 ref reactiveVueAPIReact
- Spring響應式Reactive程式設計的10個陷阱 -Jeroen RosenbergSpringReact程式設計ROS
- 第七章:C#響應式程式設計System.ReactiveC#程式設計React
- [翻譯] 響應式程式設計(Reactive Programming) - 流(Streams) - BLoC - 實際應用案例程式設計ReactBloC
- Java9第四篇-Reactive Stream API響應式程式設計JavaReactAPI程式設計
- 《響應式程式設計(Reactive Programming)介紹》文章總結與案例分析程式設計React
- Vue3中的Ref與Reactive:深入理解響應式程式設計VueReact程式設計
- vue 響應性程式碼demoVue
- 007、Vue3+TypeScript基礎,使用reactive讓介面資料變成響應式VueTypeScriptReact
- vue3 第二天vue響應式原理以及ref和reactive區別VueReact
- Spring Cloud Stream的函式式和響應式Reactive程式設計特點 - spring.ioSpringCloud函式React程式設計
- react引入相同元件時互不影響React元件
- 【原始碼&庫】Vue3 的響應式核心 reactive 和 effect 實現原理以及原始碼分析原始碼VueReact
- flex彈性佈局 響應式佈局Flex
- 使用Java和Reactive Streams構建流式應用JavaReact
- 關於全域性引入element uiUI
- 可觀察性在事件響應中的作用事件
- @ControllerAdvice 全域性異常響應頁面和 JSONControllerJSON
- Hibernate【inverse和cascade屬性】知識要點
- 使用Spring實現反應式事務(Reactive Transactions)SpringReact
- Spring AI 更新:支援OpenAI的結構化輸出,增強對JSON響應的支援SpringOpenAIJSON
- [Vue] Reactive noteVueReact
- ref和reactiveReact
- Spring Boot中如何擴充套件XML請求和響應的支援Spring Boot套件XML
- vue-cli4中全域性引入jqueryVuejQuery
- Vue 框架 使用 `:disabled` 屬性修改了原響應引數Vue框架
- Hibernate SQL方言 (hibernate.dialect)SQL
- 【應急響應】Windows應急響應入門手冊Windows
- Hibernate中不支援複雜子查詢from (select ……)解決方案
- hibernate跨資料庫,columnDefinition不可移植性改造方案資料庫
- Hibernate
- OSS支援HTTP/2已知影響HTTP