OSS探訪GitHubでログイン

SQLをJavaの型安全なDSLとして組み立て、データベース定義からコードを生成するライブラリ

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
6,793
主要言語
Java
ライセンス
未判定
リポジトリ最終更新
2026/10/01
ページ内ナビ

概要

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]

向いている用途

SQLを明示的に制御しながら、スキーマ変更をJavaの型検査へつなげたい開発に向く

複雑な問い合わせ、DB固有機能、レポート処理などでSQLを隠したくない一方、文字列SQLだけに依存したくないJava開発に向きます。コード生成をCIやビルドへ組み込み、スキーマ変更とアプリケーションの不整合を早く検出したいチームにも適しています。

出典:[2][6]

導入前の確認

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のキャンセルやトランザクションなど多数の不具合を修正したパッチ版です。

出典:[4][5][6][3]

参考にした公式資料

  1. [1]jOOQ/jOOQ repository metadata(2026-10-04)
  2. [2]jOOQ 3.21.9 README(2026-10-04)
  3. [3]jOOQ 3.21.9 release(2026-10-04)
  4. [4]jOOQ 3.21.9 parent POM(2026-10-04)
  5. [5]jOOQ 3.21.9 license notice(2026-10-04)
  6. [6]jOOQ 3.21 manual — preparation(2026-10-04)
編集部からの補足

ORMとしてSQLを隠す道具ではなく、SQLを中心に据えたままJavaの型とIDE支援を使う選択肢です。採用時は対象DBがOpen Source Editionの範囲か、コード生成をビルドへどう組み込むかを先に確認してください。

3ステップで試す

  1. 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. 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. 3

    SQLの生成結果を確認する

    生成されたselect 1 as "answer"相当のSQLを確認します。

    mvn -q compile org.codehaus.mojo:exec-maven-plugin:3.6.2:java -Dexec.mainClass=Main
公式READMEで確認

成長

成長の推移 · 直近30日

6,793 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
31
Open PR
2

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • jooq
  • java
  • sql
  • jpa
  • sql-builder
  • sql-query
  • sql-query-builder
  • sql-query-formatter
  • sql-formatter
  • database
  • code-generator
  • jdbc
Stars
6,793
Forks
1,218
Watchers
149
Open Issues
2,115
Contributors
86
所有者種別
Organization
主要言語
Java
ライセンス
未判定
リポジトリ最終更新
2026/10/01

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?