Websphere でデータ Bean またはアクセス Bean を使用するのが適切なのはいつですか? 基本的な質問をしている場合は申し訳ありません。Websphere は初めてです。
私の場合、製品別のカタログのリストを見つけようとしています。最初はアクセス Bean を使用していました。これは機能しますが、非常に大きな結果セットを返す場合があり、メモリを大量に消費するようです。
CatalogEntryDescriptionAccessBean cedabp = new CatalogEntryDescriptionAccessBean();
Enumeration cde = cedabp.findByCatalogEntry(productCatIdLong);
データ Bean は同じメソッドを提供します。
CatalogEntryDescriptionDataBean cedabp = new CatalogEntryDescriptionDataBean();
Enumeration cde = cedabp.findByCatalogEntry(productCatIdLong);
ある Bean を他の Bean よりも優先して使用するのはなぜですか? データの読み取りまたは書き込みに適しているのはどれですか? 一方が提供するデータはキャッシュされていますか、または他方よりも最新ですか?
アップデート:
2 つのクラスには次の関係があることがわかりました。
CatalogEntryDescriptionAccessBean
|_ CachedCatalogEntryDescriptionAccessBean
|_ CompactCatalogEntryDescriptionAccessBean
|_ CatalogEntryDescriptionDataBeanBase
|_ CatalogEntryDescriptionDataBean
したがって、Data Bean は Access Bean から継承されるため、同じ可視メソッドが含まれているのです。
興味深いことに、IBM のドキュメントには次のように記載されています。
アクセス Bean が提供するもの ... ホーム オブジェクトのキャッシング、およびエンタープライズ Bean への呼び出しトラフィックの削減。アクセス Bean を使用すると、さらに利点があります。
アクセス Bean は実行時にエンタープライズ Bean のホーム オブジェクトをキャッシュします。これは、ホーム オブジェクトのルックアップは時間とリソースの使用量の点でコストがかかるためです。アクセス Bean は、コマンドがエンタープライズ Bean 属性を取得および設定するときに、エンタープライズ Bean への呼び出しの数を減らす copyHelper オブジェクトを実装します。複数のエンタープライズ Bean 属性を読み書きする場合は、エンタープライズ Bean を 1 回呼び出すだけで済みます。
現時点では、Access Bean が CMP を使用して Entity Bean への呼び出しを削減している場合、Data Bean がどのような目的を果たすのかについて混乱していますか?
次のようなドキュメントを見つけました。
データ Bean は、エンタープライズ Bean から情報を取得するために JSP ページで使用される Java Bean です。単純なデータ Bean は、対応するアクセス Bean を拡張し、SmartDataBean インターフェースを実装します。アクセス Bean を拡張することにより、データ Bean はエンティティ Bean の (間接的な) 単純な表現を提供します。つまり、エンティティ Bean から取得したり、エンティティ Bean 内で設定したりできるプロパティをカプセル化します。