About

ドキュメント

プロジェクト文書

Built by Maven

FAQ

一般的な質問

  1. Domaの特長は何ですか?
  2. Domaとはどのような意味ですか?
  3. Domain(ドメイン)とは何ですか?
  4. Domain(ドメイン)を利用する利点は何ですか?
  5. apt(アプト)とは何ですか?

動作環境に関する質問

  1. どのバージョンのJREをサポートしていますか?
  2. Domaを動作させるのにSeasar2は必須ですか?
  3. Domaを動作させるのに必要なライブラリには何がありますか?

開発環境に関する質問

  1. どのバージョンのJDKをサポートしていますか?
  2. お奨めのIDE(統合開発環境)はありますか?
  3. DomaのjarファイルをEclipseのビルドパスに指定しましたが、アノテーション処理が行われません。何が足りないのでしょうか?

O/Rマッパーの機能に関する質問

  1. どのRDBMSをサポートしていますか?
  2. SQLを自動生成する機能はありますか?
  3. 条件が動的に変わるSQLはどのように実行できますか?
  4. プログラミングで問い合わせ条件を組み立てるためのクライテリアAPIはありますか?
  5. バッチ更新はサポートしていますか?
  6. 楽観的排他制御はサポートしていますか?
  7. 悲観的排他制御はサポートしていますか?
  8. ページングはサポートしていますか?
  9. 主キーの自動生成はサポートしていますか?
  10. 複合主キーはサポートしていますか?
  11. 1対1 や 1対n などデータベース上のリレーションシップをJavaオブジェクトにマッピングできますか?
  12. 遅延ローディングをサポートしていますか?
  13. ストアドプロシージャーやストアドファンクションをサポートしていますか?
  14. データベースから取得した結果をキャッシュする機能はありますか?
  15. コネクションプーリングの機能はありますか?
  16. トランザクションを制御する機能はありますか?

一般的な質問

Domaの特長は何ですか?

主要な特長は2つあります。

  1. apt(アプト)を使用して、コンパイル時にコードの生成やコードの検証を行います。これにより、プログラミングミスを早期に発見できます。
  2. データベース上のカラムの値をDomain(ドメイン)と呼ばれるJavaオブジェクトにマッピングできます。これにより、型を活かしたプログラミングが容易になります。

[top]

Domaとはどのような意味ですか?

Domain Oriented MApping Framework の略です。

[top]

Domain(ドメイン)とは何ですか?

値のとり得る範囲(定義域)のことです。 Domaでは、テーブルのカラムの値を、ドメインと呼ばれるJavaオブジェクトで扱えます。

たとえば、一般的なO/Rマッパーでは、データベースのVARCHAR型をJavaのStringにマッピングしますが、 Domaでは、アプリケーション固有の型にマッピングすることを推奨しています。 なぜならば、データベース上では同じVARHCAR型でも、従業員名を表すVARCHAR型と電話番号を表すVARCHAR型は、 異なるJavaの型で扱うべきと考えるからです。 このアプリケーション固有の型をドメインと呼びます。

[top]

Domain(ドメイン)を利用する利点は何ですか?

主要な利点は次のものです。

  1. 異なる型で表すことで意味を明確にできます。
  2. 異なる型で表すことでまちがって代入してしまうなどのプログラミングミスを事前に防ぐことができます。
  3. アプリケーション独自の型であるために、アプリケーションに適した振る舞いをもたせられます。

[top]

apt(アプト)とは何ですか?

Annotation Processing Toolの略です。 狭義では、Java 5 で導入された 注釈処理ツール を意味しますが、広義では、Java 6 で導入された Pluggable Annotation Processing API (JSR 269) を含みます。

aptを利用することで、コンパイル時のソースコード検証や、ソースコード生成が可能です。

Domaでは、Pluggable Annotation Processing APIを使用して、 Daoのインタフェースから実装クラスを生成しています。 また、SQLファイルの存在チェックや、メソッド定義が規約に合致しているかどうかの検証も行っています。

[top]

動作環境に関する質問

どのバージョンのJREをサポートしていますか?

JRE 6 以上をサポートしています。JRE 5 以前はサポートしていません。

[top]

Domaを動作させるのにSeasar2は必須ですか?

いいえ、必須ではありません。

[top]

Domaを動作させるのに必要なライブラリには何がありますか?

Domaはどのライブラリにも依存していません。単独で動作します。

[top]

開発環境に関する質問

どのバージョンのJDKをサポートしていますか?

JDK 6 以上をサポートしています。JDK 5 以前はサポートしていません。

[top]

お奨めのIDE(統合開発環境)はありますか?

Eclipseをお奨めします。Eclipseのバージョンは 3.5 以上でなければいけません。

Eclipse 3.5 は JDK 6 で動作させる必要があります。 また、プロジェクトでも JDK 6 を使用する必要があります。

[top]

DomaのjarファイルをEclipseのビルドパスに指定しましたが、アノテーション処理が行われません。何が足りないのでしょうか?

Factory PathにもDomaのjarファイルを登録してください。

Factory Pathの設定画面は、プロジェクトのプロパティ設定画面から、 Java - Compiler - Annotation Processing - Factory Path と辿れます。 Annotation ProcessingとFactory Pathの画面では、 「Enable project specific settings」のチェックボックスをチェックしてください。

[top]

O/Rマッパーの機能に関する質問

どのRDBMSをサポートしていますか?

Oracle Database、PostgreSQL、MySQL、HSQLDBに対応しています。 要望があれば他のRDBMSへの対応も検討します。 また、利用者が独自に対応モジュールを作成することも可能です。

[top]

SQLを自動生成する機能はありますか?

はい。更新系SQL、ストアドプロシージャー/ファンクション呼び出しについてはSQLを自動で生成できます。 検索系のSQLについては、自動生成機能はありませんが、ファイルに外部化したSQLを実行し、その結果をJavaのオブジェクトにマッピングする機能があります。 更新系のSQLについても、必要であれば、ファイルに外部化したSQLを利用できます。

[top]

条件が動的に変わるSQLはどのように実行できますか?

SQLファイルに、SQLコメントを使って条件を指定できます。 SQLコメントは実行時に解析され、条件によって異なるSQLが生成されます。

[top]

プログラミングで問い合わせ条件を組み立てるためのクライテリアAPIはありますか?

いいえ、ありません。 しかし、動的なSQLは、SQLコメントを使って条件指定できます。 また、外部化されたオリジナルのSQLをページング用のSQLや悲観的ロック用のSQLに変換する機能があります。

[top]

バッチ更新はサポートしていますか?

はい、サポートしています。

[top]

楽観的排他制御はサポートしていますか?

はい、バージョン番号による楽観的排他制御をサポートしています。

[top]

悲観的排他制御はサポートしていますか?

はい、ファイルに外部化したオリジナルのSQLを悲観的排他制御用SQLに変換できます。 ただし、RDBMSが悲観的排他制御に対応している必要があります。

[top]

ページングはサポートしていますか?

はい、ファイルに外部化したオリジナルのSQLをページング用SQLに変換できます。

[top]

主キーの自動生成はサポートしていますか?

はい。データベースのIDENTITY、シーケンス、テーブルを利用した自動生成がサポートされています。

[top]

複合主キーはサポートしていますか?

はい、サポートしています。

[top]

1対1 や 1対n などデータベース上のリレーションシップをJavaオブジェクトにマッピングできますか?

いいえ、できません。 Domaでは、SQLの結果セットを1行をそのまま1つのエンティティのインスタンスにマッピングします。

[top]

遅延ローディングをサポートしていますか?

いいえ、サポートしていません。

[top]

ストアドプロシージャーやストアドファンクションをサポートしていますか?

はい、サポートしています。

[top]

データベースから取得した結果をキャッシュする機能はありますか?

いいえ、ありません。

[top]

コネクションプーリングの機能はありますか?

いいえ、Domaでは提供していません。 コネクションプーリング機能をもつフレームワークやライブラリと組み合わせて使用してください。

[top]

トランザクションを制御する機能はありますか?

いいえ、Domaでは提供していません。 Java Transaction API (JTA) など、データーソースと連動するトランザクション機能と組み合わせて使用してください。

[top]