jooq 执行sql_使用jOOQ和Java 8的CompletableFuture进行异步SQL执行
jooq 執(zhí)行sql
響應(yīng)式編程是一個(gè)新的流行詞,它實(shí)際上僅表示異步編程或消息傳遞。
事實(shí)是,函數(shù)語法極大地幫助構(gòu)建了異步執(zhí)行鏈,今天,我們將看到如何使用jOOQ和新的CompletableFuture API在Java 8中做到這一點(diǎn)。
實(shí)際上,事情很簡(jiǎn)單:
這里真的發(fā)生了什么? 沒有什么不尋常的。 有4個(gè)執(zhí)行塊:
最后,當(dāng)執(zhí)行鏈建立時(shí),調(diào)用線程將使用CompletableFuture.join()方法加入整個(gè)鏈,該方法與Future.get()方法基本相同,不同之處在于它不會(huì)引發(fā)任何已檢查的異常。
將此與其他API進(jìn)行比較
諸如Scala的Slick之類的其他API也通過“標(biāo)準(zhǔn)API”實(shí)現(xiàn)了類似的功能,例如對(duì)flatMap()調(diào)用。 我們目前不會(huì)模仿這樣的API,因?yàn)槲覀兿嘈判碌腏ava 8 API對(duì)于本機(jī)Java講者來說將變得更加慣用。 具體來說,在執(zhí)行SQL時(shí),正確實(shí)現(xiàn)連接池和事務(wù)至關(guān)重要。 異步鏈接執(zhí)行塊的語義以及它們與事務(wù)的關(guān)系非常微妙。 如果您希望事務(wù)跨越多個(gè)這樣的塊,則必須自己通過jOOQ的Configuration及其包含的ConnectionProvider對(duì)其進(jìn)行編碼。
阻止JDBC
顯然,此類解決方案始終存在一個(gè)障礙,那就是JDBC本身-很難轉(zhuǎn)換為異步API。 實(shí)際上,很少有數(shù)據(jù)庫真正支持異步查詢執(zhí)行和游標(biāo),因?yàn)榇蠖鄶?shù)情況下,單個(gè)數(shù)據(jù)庫會(huì)話一次只能由單個(gè)線程用于單個(gè)查詢。
翻譯自: https://www.javacodegeeks.com/2014/09/asynchronous-sql-execution-with-jooq-and-java-8s-completablefuture.html
jooq 執(zhí)行sql
總結(jié)
以上是生活随笔為你收集整理的jooq 执行sql_使用jOOQ和Java 8的CompletableFuture进行异步SQL执行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 8中的StringJoiner
- 下一篇: java美元兑换,(Java实现) 美元