面向Java對象查詢
Java物件導向查詢(英語:Java Object Oriented Querying,縮寫:JOOQ),是一個輕量級的JAVA數據庫映射類庫。它實現了Active Record,同時面向「關係」和「對象」提供領域特定語言以構造查詢語句。
開發者 | Data Geekery GmbH |
---|---|
當前版本 | 3.3.0(2014年2月14日 | )
編程語言 | Java |
操作系統 | 跨平台 |
平台 | Java |
類型 | 對象關係映射 |
許可協議 | Dual-licensed: ASL 2.0 and commercial |
網站 | http://www.jooq.org |
編程範式
jOOQ主張,在任何數據庫集成中,都應首先考慮發揮SQL的作用。這樣一來,就不必再引入新的查詢語言,而只是通過jOOQ對象以及依照數據庫架構自動生成的代碼來創建普通的SQL。jOOQ通過JDBC來完成底層的SQL查詢。 與諸如Hibernate等通常ORM類庫不同的是,jOOQ並不提供過多的功能,複雜性也不高,它只是提供了JDBC之上更便捷的抽象層封裝而已。
代碼範例
嵌套查詢一個起了別名的表
-- 选取已售罄书籍的作者
SELECT * FROM AUTHOR a
WHERE EXISTS (SELECT 1
FROM BOOK
WHERE BOOK.STATUS = 'SOLD OUT'
AND BOOK.AUTHOR_ID = a.ID);
等價的jOOQ
// 在Select语句中使用别名
create.selectFrom(AUTHOR.as("a"))
.where(exists(selectOne()
.from(BOOK)
.where(BOOK.STATUS.equal(BOOK_STATUS.SOLD_OUT))
.and(BOOK.AUTHOR_ID.equal(a.ID))));