Java アダプタの使用

Java アダプタを使用すると、サーバー上の Java オブジェクトとクライアント上の ActionScript オブジェクトを同期させることができます。このアダプタは、アセンブラと呼ばれる、Java クラスで使用できるメソッドにデータ変更を渡します。Java アダプタはカスタムアセンブラクラスや Hibernate アセンブラに使用します。Hibernate アセンブラを使用すると、Hibernate オブジェクトリレーショナルマッピングシステムを操作できます。

Hibernate を使用しないアプリケーションでは、まず、アプリケーションオブジェクトのサポートに必要な宛先について決定し、それから、各宛先のアセンブラクラスを定義する必要があります。アセンブラクラスでは 1 つまたは複数の fill メソッドをサポートする必要があります。これらのメソッドではクエリを実装します。クエリではそれぞれ、オブジェクトの Collection をクライアントコードに返します。クライアントでオブジェクトを更新する必要がある場合は、sync メソッドが必要になるか、または create、update、delete の各メソッドが個別に必要になります。

使用するサーバーアーキテクチャによっては、ドメインモデルオブジェクトをクライアントに直接転送することを選択するか、あるいは、クライアント層に公開するモデル状態だけを複製する別の DAO (データ転送オブジェクト) 層を実装することができます。

サブトピック

アセンブラについて
オブジェクト型と関係
Java アダプタでの厳密な型および匿名型の使用
Java アダプタを使用する宛先の設定
fill メソッドの結果に対する変更の検出
fill-method および sync-method によるアプローチの使用
Assembler インターフェイスによるアプローチの使用
設定ファイルの設定

アセンブラについて

Data Management Service では、Java アセンブラクラスを記述する 2 つのアプローチがサポートされています。1 つは簡単なアプリケーションを対象としたアプローチで、Data Management Service の機能のうち必要なものだけをサポートできます。このアプローチでは、宛先定義で fill-method および sync-method という XML エレメントを使用して個々のメソッドを宣言し、アセンブラクラスのメソッドにマップします。クライアントで必要になる機能セットについて、それらに必要なメソッドを追加するだけで済みます。たとえば、クライアントアプリケーションが読み取り専用の場合は、クライアントでの必要に応じて get メソッドや fill メソッドを提供するだけで済む可能性があります。get メソッドは、クライアントで DataService.getItem() メソッドを使用する場合に、アセンブラで必要になります。また、cache-itemsfalse に設定し、そのアイテムを指し示す遅延関連付けを設定する場合や、ページングを使用する場合にも、get メソッドが必要になります。

その後、アセンブラで更新をサポートする必要が生じた場合には、sync-method 定義を追加できます。このアプローチでは特別な Flex インターフェイスをクラスで実装する必要がありません。そのため、場合によっては、簡単な事例においてこのアプローチを使用することで、Java コードを記述しなくても機能を Flex アプリケーションに公開できる可能性があります。

もう 1 つのアプローチは Assembler インターフェイスによるアプローチと呼ばれ、従来の手法に近い方法で Java コンポーネントとのインターフェイスを提供します。これには、flex.data.assemblers.Assembler インターフェイスを実装する flex.data.assemblers.AbstractAssembler を拡張し、getItem()fill()createItem()updateItem() などのメソッドをオーバーライドします。AbstractAssembler クラスは Assembler インターフェイスのすべてのメソッドのデフォルト実装を提供します。そのため、このアプローチでは最初のアプローチと比べていくつかの利点があります。AbstractAssembler クラスと Assembler インターフェイスの詳細については、公開されている『Flex データサービス Javadoc マニュアル』を参照してください。

両方のアプローチを同じアセンブラクラスで組み合わせることもできます。メソッドの XML 定義がある場合、Data Management Service は、Assembler インターフェイス内の等価なメソッドではなく XML 定義のほうのメソッドを呼び出します。宛先定義で XML 宣言を使用して fill および count メソッドを追加することにより、クエリをクライアントに公開できるので便利です。また、アセンブラの fill() メソッドでさまざまなタイプの fill メソッドについて送出を実行せずに済みます。一致する fill-method エレメントが宛先内で見つかった場合は、そのメソッドが呼び出されます。見つからなかった場合には、Data Management Service は、Assembler インターフェイスで定義されアセンブラで実装されている fill() メソッドを呼び出します。


Flex 2.01