概要
Domain(ドメイン)クラスの定義方法を示します。 ドメインとは、値のとり得る範囲(定義域)のことです。 Domaでは、テーブルのカラムの値を、ドメインと呼ばれるJavaオブジェクトで扱います。
ドメインクラスを利用することで、データベース上のカラムの型が同じあってもアプリケーション上意味が異なるものを別のJavaの型で表現できます。 これにより、意味を明確にしプログラミングミスを事前に防ぎやすくなります。 また、ドメインクラスに振る舞いを持たせることで、よりわかりやすいプログラミングが可能です。
ドメインクラスの作成と利用は任意です。
ドメインクラスを利用しなくてもInteger
やString
など基本型のみでデータアクセスは可能です。
ドメイン定義
ドメインクラスは @Domain
を注釈して示します。
@Domain
のvalueType
要素には、ドメインクラスで扱う基本型を指定します。この基本型が、データベースのカラムの型とのマッピングに使用されます。
accessorMethod
要素には、valueType
要素に指定した型を返すアクセッサーメソッドの名前を指定します。デフォルト値はgetValue
です。
以下の例では、 電話番号を表すドメインクラスを作成しています。
package example.domain; import org.seasar.doma.Domain; @Domain(valueType = String.class) public class PhoneNumber { private final String value; public PhoneNumber(String value) { this.value = value; } public String getValue() { return value; } public String getAreaCode() { // ドメインに固有の振る舞いを記述できる。 ... } }
クラスには、valueType
要素に指定した型と同じ型をもつ非private
なコンストラクタが必要です。
また、accessorMethod
要素にしてした値を名前とする非private
なメソッドが必要です。
任意ですが、ドメインクラスは不変オブジェクトとして作成することを推奨します。
上記の例では、value
フィールドは一度設定されると二度と変更されません。
クラスには、任意のメソッドを持たせることができます。