Omelet Reference(Draft) 4
エンティティ
エンティティは、詰め込んだ値をDAOのパラメータとして渡したり、結果セットを詰め替えて返すために用いるオブジェクトです。
エンティティの定義
エンティティはドメイン同様クラスですが、ドメインとは異なり何か別のクラスを継承する必要はありません。
ただし、エンティティとして定義するためには、以下の条件を満たす必要があります。
- エンティティのフィールドは、プリミティブな型か、もしくはドメインのみ。
- エンティティのフィールドは public のアクセス制限が必要。
- public として公開された、引数なしのコンストラクタが存在すること。
以下はプリミティブ値として使用可能な型です。
- 文字列(string)
- 整数(integer / int)
- 論理型(boolean / bool)
- 不動小数点数(float / double)
- タイムゾーンなし日時(DateTime)
フィールドの型は、ドキュメントコメントで指定します。指定がない場合、 string であると仮定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
上の例で、コンストラクタを定義していないですが、その場合デフォルトコンストラクタが自動的に用意されるため、問題ないです。
エンティティフィールドの別名
エンティティをDAOのパラメータや、結果セットの詰め替え先として用いることができます。
しかし、必ずしも、パラメータ名や結果セットの列名と一致させることができるとは限りません。
そのために、エンティティのフィールドに対して別名を設定することができます。
別名の設定は、ドメイン同様 @Omelet\Annotation\Column アノテーションを使用します。
1 2 3 4 5 6 7 8 9 10 11 |
|
エンティティフィールドの規定値
@Column アノテーションは、結果セットに該当の列が存在しない時に適用される規定値を指定することができます。
1 2 3 4 5 6 |
|
- 現在クラスのフィールドに定義された規定値は無視しています
1 2 3 4 5 6 |
|
ドメインの関数従属値の指定
結果セットの値をエンティティに詰め込む際、フィールドにドメインが存在し、そのドメインが関数従属の値を受け入れる場合、 @Column アノテーションで、その列名を指定することができます。
1 2 3 4 5 6 7 8 |
|
@Column の optFields に宣言した順に、ドメインのコンストラクタに渡されることに注意してください。