ページ内ナビ
概要
jOOQは、SQLをJavaの内部DSLとして記述し、データベースのスキーマからテーブルや列に対応する型付きコードを生成するライブラリです。SQLの表現力を保ちながら、補完、識別子の入力誤り、型の不一致をコンパイル時に検出しやすくします。JDBCによる実行に加え、動的SQL、DAO、R2DBC、入出力、SQL解析・変換などを同じAPI群で扱えます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
生成したテーブル・列の型を使い、SQLをJava DSLで組み立てる
コード生成器がスキーマのメタデータからJavaのテーブル・列表現を作り、DSL APIがSELECT、JOIN、条件、並べ替えなどのSQL構造を型付きで表します。列名や型、変換先DTOが変わった場合にコンパイルエラーとして気付きやすく、SQLとJavaコードを往復して保守できます。
出典:[2]
複雑なSQL、ネストした結果、複数方言、JDBC・R2DBCを一つの道具で扱う
READMEはMULTISETによるネストしたコレクションの取得、暗黙JOIN、DTOへの変換を例示しています。動的SQL、DDL/DML、SQL解析・変換、トランザクション、JDBCに加えてR2DBCによるリアクティブ取得も提供し、多数のRDBMS方言へ対応します。
出典:[2]
向いている用途
導入前の確認
Java要件、コード生成工程、対象DBとエディションのライセンス範囲を先に確認する
3.21.9の親POMはJava 21を基準にしています。型安全性を十分に得るにはスキーマからのコード生成と生成物の更新方法をビルドへ組み込む必要があります。GitHub APIのライセンス判定はNOASSERTIONですが、リポジトリのLICENSEはApache-2.0と商用ライセンスを案内し、公式手順ではOpen Source EditionだけがMaven Centralから入手可能です。対象データベース、Java版、サポート要件に応じたエディションを確認してください。3.21.9はR2DBCのキャンセルやトランザクションなど多数の不具合を修正したパッチ版です。
参考にした公式資料
- [1]jOOQ/jOOQ repository metadata(2026-10-04)
- [2]jOOQ 3.21.9 README(2026-10-04)
- [3]jOOQ 3.21.9 release(2026-10-04)
- [4]jOOQ 3.21.9 parent POM(2026-10-04)
- [5]jOOQ 3.21.9 license notice(2026-10-04)
- [6]jOOQ 3.21 manual — preparation(2026-10-04)
編集部からの補足
ORMとしてSQLを隠す道具ではなく、SQLを中心に据えたままJavaの型とIDE支援を使う選択肢です。採用時は対象DBがOpen Source Editionの範囲か、コード生成をビルドへどう組み込むかを先に確認してください。
3ステップで試す
- 1
Java 21の試用プロジェクトを作成する
固定版POMと同じMaven Compiler Plugin 3.15.0でJava 21を指定し、Maven CentralのOpen Source Edition 3.21.9を取得する最小構成です。
mkdir jooq-demo && cd jooq-demo && printf '%s\n' '<project xmlns="http://maven.apache.org/POM/4.0.0"><modelVersion>4.0.0</modelVersion><groupId>demo</groupId><artifactId>jooq-demo</artifactId><version>1</version><properties><maven.compiler.release>21</maven.compiler.release></properties><dependencies><dependency><groupId>org.jooq</groupId><artifactId>jooq</artifactId><version>3.21.9</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.15.0</version><configuration><release>21</release></configuration></plugin></plugins></build></project>' > pom.xml - 2
型付きDSLの最小コードを用意する
データベースへ接続せず、PostgreSQL方言のSELECT文をJava DSLから組み立てます。
mkdir -p src/main/java && printf '%s\n' 'import static org.jooq.impl.DSL.*;' 'import org.jooq.SQLDialect;' 'class Main { public static void main(String[] a) { System.out.println(using(SQLDialect.POSTGRES).select(inline(1).as("answer")).getSQL()); } }' > src/main/java/Main.java - 3
SQLの生成結果を確認する
生成された
select 1 as "answer"相当のSQLを確認します。mvn -q compile org.codehaus.mojo:exec-maven-plugin:3.6.2:java -Dexec.mainClass=Main
成長
成長の推移 · 直近30日
6,793 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 31
- Open PR
- 2
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- DuckDB41,895 Stars
共通タグ 2件 · 共通カテゴリ 1件
CSV・Parquet・DataFrameをserverなしで直接SQL分析し、application processへ埋め込めるOLAP engine
C++ - PostgreSQL22,271 Stars
共通タグ 2件 · 共通カテゴリ 1件
transaction・constraint・index・custom type/functionをSQLの整合性モデルへ統合するobject-relational database
C - MySQL Server12,440 Stars
共通タグ 2件 · 共通カテゴリ 1件
InnoDB transaction・SQL・replication・backup/HAを提供するOracle管理のrelational database server
C++ - MariaDB Server8,311 Stars
共通タグ 2件 · 共通カテゴリ 1件
MySQL protocol互換・複数storage engine・replication・native vector searchを備えるSQL database
C++ - Apache Spark44,116 Stars
共通タグ 2件
SQL・DataFrame・stream・MLを同じdistributed engineで処理する
Scala - Supabase111,062 Stars
共通タグ 1件 · 共通カテゴリ 2件
Postgresを中心にAuth・REST/GraphQL API・Realtime・Storage・Functionsを統合するdevelopment platform
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。