| 開発者 | データオタク株式会社 |
|---|---|
| 安定版リリース | 3.19.10 / 2024年6月14日[1] |
| リポジトリ | github.com/jOOQ/jOOQ |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| プラットフォーム | ジャワ |
| タイプ | オブジェクトリレーショナルマッピング |
| ライセンス | デュアルライセンス: Apache-2.0と商用 |
| Webサイト | 詳しくはこちら |
jOOQ オブジェクト指向クエリ( jOOQとも呼ばれる) は、アクティブ レコード パターンを実装するJavaの軽量データベース マッピングソフトウェア ライブラリです。その目的は、データベース スキーマから生成されたクラスからクエリを構築するためのドメイン固有言語を提供することで、リレーショナルとオブジェクト指向の両方を実現することです。[引用が必要]
パラダイム
jOOQ は、あらゆるデータベース統合においてSQL が最優先であると主張しています。したがって、新しいテキストクエリ言語を導入するのではなく、jOOQ オブジェクトとデータベース スキーマから生成されたコードからプレーンSQL を構築できるようにします。jOOQ は、基礎となる SQL クエリを呼び出すためにJDBC を使用します。 [引用が必要]
jOOQ は JDBC の上に抽象化を提供しますが、 EclipseLinkやHibernateなどの標準のオブジェクトリレーショナルマッピングライブラリほど機能や複雑さはありません。[引用が必要]
jOOQ は SQL に近いため、一般的なオブジェクト リレーショナル マッピング ライブラリよりも優れています。[引用が必要] SQL には、オブジェクト指向 プログラミング パラダイムでは使用できない機能が多数あります。この一連の相違点は、オブジェクト リレーショナル インピーダンス ミスマッチと呼ばれます。SQL に近いため、jOOQ は構文エラーや型マッピングの問題を防ぐのに役立ちます。[引用が必要]また、変数バインディングも処理されます。jOOQ では、エイリアシング、ユニオン、ネストされた選択、複雑な結合を含む非常に複雑なクエリを作成することもできます。jOOQ は、 UDT、列挙型、ストアド プロシージャ、ネイティブ関数などのデータベース固有の機能もサポートしています。[引用が必要]
例
エイリアステーブルから選択するネストされたクエリ
-- 売り切れている本の著者を選択します
SELECT * FROM AUTHOR a WHERE EXISTS ( SELECT 1 FROM BOOK WHERE BOOK . STATUS = 'SOLD OUT' AND BOOK . AUTHOR_ID = a . ID );
jOOQ DSL での同等のものは次のとおりです。
// SELECT ステートメントでエイリアス テーブルを使用します
。create.selectFrom ( table ( "AUTHOR" ) . as ( "a" )) . where ( exists ( selectOne ( ) . from ( table ( "BOOK" )) . where ( field ( "BOOK.STATUS" ). equal ( field ( "BOOK_STATUS.SOLD_OUT" ))) . and ( field ( "BOOK.AUTHOR_ID" ). equal ( field ( "a.ID" )))));
あるいはもっと簡単に言えば、データベースメタデータからのコード生成を使用して定数を生成します。
// SELECT ステートメントでエイリアス テーブルを使用します。final Author a = AUTHOR . as ( "a" );
create . selectFrom ( a )
. where ( exists ( selectOne ( ) . from ( BOOK ) . where ( BOOK . STATUS . equal ( BOOK_STATUS . SOLD_OUT )) . and ( BOOK . AUTHOR_ID . equal ( a . ID ))));
参照
参考文献
- ^ 「Tags · jOOQ/jOOQ」. github.com . 2024年6月19日閲覧。
外部リンク
- jOOQ ホーム
- jOOQ で Spring Boot を使用する
- JSR-341
- JaQu 2021-05-05 にWayback Machineでアーカイブされました
- リンク4j
- クエール
- クエリDSL
