一千萬個為什麽

搜索

Java:JOOQ持久性框架性能和反饋

我在一個不錯的SQL上偶然發現構建器框架,稱為 JOOQ 。 BTW,在俄羅斯JOOQ聽起來像名詞意思是“蟲子”(作為昆蟲),“甲蟲”;)

如果您對JOOQ有任何反饋,那就是性能等,請分享。有關JOOQ的博客鏈接也很受歡迎。

最佳答案

我想我也應該在這裏回答因為我在一個半月前開始使用jooq所以我有一些經驗。

我想使用像jooq這樣的工具,因為:

  • ORM在我當前的項目(群集的分布式計算平臺)中是一種矯枉過正,因為我只需要從db中讀取和寫入單獨的字段,而不是完整的表行,並且我的一些查詢很復雜,不能通過簡單的方式執行輕量級ORM。
  • 我希望我的查詢語法自動完成,這樣我就不需要記住整個數據庫了
  • 我希望能夠直接在Java中編寫查詢,以便編譯器可以檢查構建時的基本查詢語法。
  • 我希望我的查詢是類型安全的,這樣我就不會意外地傳遞一種類型的變量,而另一種類型的變量是預期的。
  • 我想要SQL,但我希望它非常方便易用

好吧,有了jooq我就能實現這一切。我的主要要求是jooq處理足夠復雜的查詢(嵌套,分組等)。這已經實現了。

我還希望能夠使用盡可能少的代碼行運行查詢,並且能夠使用jooq fluent API實現這一點,這允許類似jquery的調用來執行SELECT。

On my way using of jooq I reported a one or two bugs and I must say, that they were fixed surprisingly fast.

I also missed some features and again I must say, that I already have almost all of them.

我非常喜歡的是,jooq現在使用SLF4J報告一些非常有趣的數據,這些數據是關於它的性能以及輸出它構建的實際查詢。它真的幫助我調試。

Jooq甚至為存儲過程,UDF和可更新記錄集生成Java工件,但我目前還沒有使用它們。

重要的是,jooq透明地支持DB2,Derby,H2,HSQLDB,MySQL,Oracle,PostGreSQL,SQLite,SQL Server,Sybase SQL Anywhere。我認為相當廣泛的清單。

Jooq已經在Google群組中支持論壇,Lukas白天和晚上都準備好了甚至回答我最愚蠢的問題。

Jooq支持Maven,這對我來說是一個很大的安慰,因為我的所有Java項目都是基於Maven的。我們仍然想念發電機的Maven插件,但這並不重要,因為運行發電機是件小事。

用jooq寫我的查詢我突然發現,它們變得非常便攜,因為我幾乎從不在代碼中使用任何特定於MySQL的功能,因為jooq試圖盡可能地移植。對於那些不能忍受這種特性的人,我知道對SQL擴展的支持也在其中。

從我的角度來看,jooq缺乏什麽?

Well, there is no fluent API for statements other than SELECT. This complicates code a little and makes UPDATE/DELETE statements a little more complicated to write. But I think this will be added soon. Just implemented in 1.5.9! Ha! Too quick for me ;)

還有一件事。 Jooq有一本很好的手冊,但是......我不知道。可能我只是不明白它的結構或架構...當我第一次開始使用jooq時,我打開了一頁接一頁,尋找我需要的功能。例如,嘗試猜測,在 jooq手冊中描述了UPDATE和DELETE語句,看著內容......但我相信這確實是主觀的。我甚至無法解釋,從我的角度來看手冊有什麽問題。我什麽時候可以,我會發一兩張票;)

由於Trac沒有自動“這裏,那裏和後面”的鏈接,因此手冊也不是很好的導航。

那麽,對於我在莫斯科(俄羅斯)Trac頁面也不會快速打開所以閱讀手冊有點無聊。

手冊也錯過了貢獻者對jooq的良好架構描述。 Jooq遵循按合同設計的原則,當我想通過在IDE中使用我常用的Ctrl-Click一些方法名稱來學習如何實現某些功能時,我最終進入了一個沒有實現的枯燥界面;)不是那樣的我太聰明了,不能立刻開始改進jooq,但我當然會很高興了解jooq究竟是如何構建起來的。

遺憾的是,我們無法為jooq手冊做出貢獻。我預計它會出現在某種維基中。

我還想改進的是方式 新聞報道。我更喜歡鏈接到那裏的手冊或示例這個或那個新功能如何工作。

Release notes link in manual is really just a roadmap. I think, I will do that one myself tomorrow...

Jooq目前也有相對較小的社區,但我很高興地報告它不會影響代碼質量或引入新功能的方式。

Jooq真的是一個很好的項目。我也將堅持我未來的項目。我很喜歡。

轉載註明原文: Java:JOOQ持久性框架性能和反饋