具有jOOQ和Java 8的CompletableFuture的异步SQL执行
響應式編程是一個新的流行詞,它實際上僅表示異步編程或消息傳遞。
事實是,函數語法極大地幫助構建了異步執行鏈,今天,我們將看到如何使用jOOQ和新的CompletableFuture API在Java 8中做到這一點。
實際上,事情很簡單:
這里真的發生了什么? 沒有什么不尋常的。 有4個執行塊:
最后,當執行鏈建立后,調用線程將使用CompletableFuture.join()方法加入整個鏈,該方法與Future.get()方法基本相同,不同之處在于它不會引發任何已檢查的異常。
與其他API進行比較
諸如Scala的Slick之類的其他API也通過“標準API”實現了類似的功能,例如對flatMap()調用。 我們目前不會模仿這樣的API,因為我們相信新的Java 8 API對于本機Java講者來說將變得更加慣用。 特別是,在執行SQL時,正確實現連接池和事務至關重要。 異步鏈接的執行塊的語義以及它們與事務的關系非常微妙。 如果您希望一個事務跨越多個這樣的塊,則必須自己通過jOOQ的Configuration及其包含的ConnectionProvider對其進行編碼。
阻止JDBC
顯然,此類解決方案始終存在一個障礙,那就是JDBC本身-很難將其轉變為異步API。 實際上,很少有數據庫真正支持異步查詢執行和游標,因為大多數情況下,單個數據庫會話一次只能由單個線程用于單個查詢。
翻譯自: https://www.javacodegeeks.com/2014/09/asynchronous-sql-execution-with-jooq-and-java-8s-completablefuture.html
總結
以上是生活随笔為你收集整理的具有jOOQ和Java 8的CompletableFuture的异步SQL执行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos压力在线测试平台(ddos压力在
- 下一篇: rm在linux什么意思(linux