jOOQ类型安全数据库查询教程
課程大綱
SQL是用于關(guān)系數(shù)據(jù)庫(kù)查詢(xún)的功能強(qiáng)大且表達(dá)能力強(qiáng)的語(yǔ)言。 SQL已建立,標(biāo)準(zhǔn)化并且?guī)缀醪皇芷渌樵?xún)語(yǔ)言的挑戰(zhàn)。 但是,在Java生態(tài)系統(tǒng)中,自從JDBC以來(lái),幾乎沒(méi)有采取任何相關(guān)的措施來(lái)更好地將SQL集成到Java中。 在更高級(jí)別上,所有關(guān)注都集中在對(duì)象關(guān)系映射和語(yǔ)言抽象上,例如OQL,HQL,JPQL,CriteriaQuery。 同時(shí),這些抽象已經(jīng)變得幾乎和SQL本身一樣復(fù)雜,無(wú)論它們給無(wú)法修補(bǔ)生成的SQL的DBA帶來(lái)的麻煩是什么。 jOOQ是填補(bǔ)這一空白的雙重許可開(kāi)源產(chǎn)品。 它在Java中將SQL本身實(shí)現(xiàn)為內(nèi)部特定于域的語(yǔ)言,從而允許類(lèi)型安全的構(gòu)造和執(zhí)行任意復(fù)雜度的SQL語(yǔ)句。 其中包括嵌套選擇,派生表,聯(lián)接,半聯(lián)接,反聯(lián)接,自聯(lián)接,別名以及許多特定于供應(yīng)商的擴(kuò)展,例如存儲(chǔ)過(guò)程,數(shù)組,用戶(hù)定義的類(lèi)型,遞歸SQL,分組集,數(shù)據(jù)透視表,窗口函數(shù)和許多其他OLAP功能。 jOOQ還包括一個(gè)源代碼生成器,使您可以非常高效地在Eclipse等現(xiàn)代IDE中編譯查詢(xún)。
在SQL和特定關(guān)系數(shù)據(jù)庫(kù)很重要的Java應(yīng)用程序中,jOOQ是一個(gè)不錯(cuò)的選擇。 當(dāng)JPA / Hibernate抽象過(guò)多,JDBC過(guò)多時(shí),這是一種替代方法。 它顯示了一種現(xiàn)代的領(lǐng)域特定語(yǔ)言如何可以極大地提高開(kāi)發(fā)人員的生產(chǎn)率,從而將SQL內(nèi)部化為Java。 在本課程中,我們將看到如何使用jOOQ有效地查詢(xún)數(shù)據(jù)庫(kù)。
關(guān)于作者
Lukas是位于瑞士蘇黎世的Data Geekery GmbH的創(chuàng)始人兼首席執(zhí)行官。 自2013年以來(lái),Data Geekery一直在銷(xiāo)售圍繞Java和SQL的數(shù)據(jù)庫(kù)產(chǎn)品和服務(wù)。
自2006年在EPFL攻讀碩士學(xué)位以來(lái),Lukas著迷于Java和SQL的交互。 他通過(guò)各種變體(JDBC,Hibernate,主要是Oracle)在瑞士電子銀行領(lǐng)域獲得的大部分經(jīng)驗(yàn)。 他在各種會(huì)議,JUG,內(nèi)部演示和公司博客上分享他的知識(shí)。
經(jīng)驗(yàn)教訓(xùn)
在本課程中,我們將討論如何通過(guò)創(chuàng)建示例項(xiàng)目來(lái)開(kāi)始使用jOOQ,H2和Maven。
jOOQ是一種DSL(領(lǐng)域特定語(yǔ)言),它模仿Java API中的標(biāo)準(zhǔn)和特定于供應(yīng)商的SQL語(yǔ)法。 作為內(nèi)部DSL,Java編譯器可以驗(yàn)證您的SQL查詢(xún)的語(yǔ)法正確性(例如,SQL關(guān)鍵字的正確順序)。 使用表和列作為生成的Java對(duì)象,編譯器還可以驗(yàn)證元數(shù)據(jù)的正確性(例如,正確的列名和類(lèi)型)。 在本課程中,我們將深入研究jOOQ DSL,并使用謂詞,語(yǔ)句和構(gòu)建表達(dá)式。
在本課程中,我們將了解如何對(duì)Active Records執(zhí)行CRUD。 編寫(xiě)CRUD既無(wú)聊又重復(fù),這就是為什么像Hibernate這樣的ORM出現(xiàn)并成功提高開(kāi)發(fā)人員生產(chǎn)力的原因。 但是,當(dāng)您經(jīng)常只想對(duì)表中的單個(gè)記錄進(jìn)行操作時(shí),Hibernate對(duì)您的體系結(jié)構(gòu)進(jìn)行了許多假設(shè)(和限制)。 jOOQ知道“活動(dòng)記錄”或UpdatableRecords,可以將其裝入“特殊”種類(lèi)的SELECT語(yǔ)句,然后在內(nèi)部跟蹤臟標(biāo)志。 我們將學(xué)習(xí)如何執(zhí)行簡(jiǎn)單的活動(dòng)記錄操作以及如何使用樂(lè)觀鎖定。
在本課程中,我們將比較jOOQ與JDBC。 JDBC通常因冗長(zhǎng)而受到批評(píng)。 JDBC也因選擇了錯(cuò)誤的“默認(rèn)值”而受到批評(píng),例如,默認(rèn)的結(jié)果集的延遲實(shí)現(xiàn)。 我們將看到j(luò)OOQ如何改進(jìn)對(duì)檢查異常,結(jié)果集,Prepared語(yǔ)句和帶有結(jié)果集的語(yǔ)句的批評(píng)。
在本課程中,我們將學(xué)習(xí)生命周期管理對(duì)象如何與jOOQ交互。 有多種SPI(服務(wù)提供商接口),可用于管理jOOQ中各種實(shí)體的生命周期。 可以通過(guò)配置對(duì)象注入這些SPI。 我們將看到如何使用ConnectionProvider,在特定的SQLDialect上下文中jOOQ如何生成和執(zhí)行SQL語(yǔ)句以及如何使用Settings向jOOQ提供有關(guān)常規(guī)查詢(xún)呈現(xiàn)和執(zhí)行行為的信息。
請(qǐng)確保轉(zhuǎn)發(fā)此消息,讓您的社交粉絲知道!
#jOOQ類(lèi)型安全數(shù)據(jù)庫(kù)查詢(xún)教程-免費(fèi)超級(jí)課程http://t.co/9oL05sABTn pic.twitter.com/CJEd6NPB2h
— Java Code Geeks(@javacodegeeks) ,2015年10月16日
翻譯自: https://www.javacodegeeks.com/2015/09/jooq-type-safe-db-querying.html
總結(jié)
以上是生活随笔為你收集整理的jOOQ类型安全数据库查询教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微软小娜 安卓(微软安卓小娜)
- 下一篇: 将数据库日志添加到JUnit3