7.3.3. ユニバーサルDAOとJSR317(JPA2.0)との機能比較

この章では、以下の機能の比較を示す。

重要

ユニバーサルDAOでは、JPAで定義されているアノテーションのうち、 Entityに使用できるJPAアノテーション に記載のあるものだけをサポートしている。 ここに記載のないアノテーションに関連する機能については、使用できない。

機能比較(○:提供あり △:一部提供あり ×:提供なし -:対象外)
機能 ユニバーサルDAO JSR317
リレーションシップに対応できる
× [1] ○
Entityを元にCRUDが実行できる
SQLを作成することなくCRUDのSQLを実行できる
○
解説書へ
○
検索結果をJava Beansオブジェクトとして取得できる ○
解説書へ
○
任意のSQL文を実行できる ○
解説書へ
○
SQLの動的組み立てができる △ [2]
解説書へ
○
バッチ実行ができる ○
解説書へ
×
大量データを取得する際に遅延ロードができる
(ヒープを圧迫せずに大量データを処理できる)
○
解説書へ
×
ページング用の範囲指定の検索ができる ○
解説書へ
○
サロゲートキーの値を採番できる ○
解説書へ
○
Entityの状態をデータベースに反映時に
Bean Validationが実行できる
× [3] ○
データベースアクセス前後に
任意の処理(コールバック呼び出し)を実行できる
× [4] ○
排他制御ができる △ [5]
解説書へ(楽観ロック)
解説書へ(悲観ロック)
○
[1]リレーションシップがあるテーブルの検索はSQLを作成することで対応できる。登録、更新、削除については、テーブル毎に必要な処理を呼び出すことで対応する。
[2]ユニバーサルDAOでは、条件及びソート項目に限り動的な組み立てができる。詳細は、 SQLの動的組み立て を参照
[3]Nablarchでは、外部からのデータを受け付けたタイミングでバリデーションを実施し、バリデーションエラーがない場合のみEntityへ変換しデータベースへ保存する。
[4]任意の処理が必要となる場合は、ユニバーサルDAOを呼び出す側で処理を行うことで対応する。
[5]ユニバーサルDAOでは、楽観的ロックのみサポートする。悲観的ロックやJSRで定義されている検索時のロックモードの指定などはサポートしない。(悲観的ロックは、 select for update などを使用することで実現できる。)