ドメインとは

ドメインは、BC4J属性に使用される特殊なデータ型です。BC4J属性はオブジェクトですが、Javaプリミティブ型ではありません。属性は、java.lang.Stringなど標準のJavaオブジェクト、またはドメインと呼ばれる特殊なBC4Jオブジェクトです。Oracle型マップは、VARCHAR2を除くすべてのSQL型をドメインにデフォルトでマップします(VARCHAR2はStringにマップされます)。

ほとんどのビジネス・コンポーネントとは異なり、ドメイン実装クラスはクライアント層およびビジネス・ロジック層に存在します。interMediaドメイン(oracle.ord.imに存在)以外の事前定義済ドメインはoracle.jbo.domainに存在し、カスタム・ドメインはビジネス・コンポーネント・パッケージのcommonサブパッケージに存在します。どちらのパッケージもクライアント層で使用可能です。

ドメインには次の3種類があります。

事前定義済ドメイン

事前定義済ドメインは、NUMBERやBLOBなどのSQL型に対するラッパーです。すべての事前定義済ドメインは、標準のJava型を取るコントラクタを使用して作成されます。たとえば、intNumber()コントラクタに渡すことができます。事前定義済ドメインには、ドメインを標準のJavaクラスに変換するメソッド以外に、ドメインに対して特定の操作を実行するためのメソッドもあります。たとえば、Numberドメインをintに変換するには、Number.intValue()を使用できます。また、Numberドメインを直接操作するには、Number.add()などのメソッドを使用できます。

検証ドメイン

検証ドメインのクラスは、別のクラス(ドメインまたはJavaクラスのいずれか)に基づいています。検証ドメインを型として使用するすべての属性には、検証ドメインによってビジネス・ロジックが追加されます。このドメイン型のオブジェクトが作成されると、ドメインの検証が行われます。これにより、再構成または再検証することなく、異なる層の間でデータ・オブジェクトを渡すことが可能です。

検証ドメインは、エンティティ属性と同じ設定を持つことができます。エンティティ属性がドメインを型として持つ場合、その属性はドメインの設定を継承します。属性によりドメインの設定がさらに制限されることはありますが、制限が緩和されることはありません。たとえば、あるドメイン型に一時属性を含めない場合は、そのドメインを永続的としてマークします。

Oracleオブジェクト型ドメイン

Oracleオブジェクト型ドメインは、Oracleオブジェクト型のラップに限定して使用されます。このドメインには、validate()メソッドはありません。Oracleオブジェクトの使用方法の詳細は、「ビジネス・コンポーネントおよびOracleオブジェクト型について」を参照してください。


関連項目
ドメイン・ウィザード - 「初期画面」ページ
ドメインの属性設定の継承とオーバーライドについて
ビジネス・コンポーネントのデータ型