EJB のステートレス Bean とステートフル Bean の違いがまだはっきりとわかりません。どの状況でステートレスとどのステートフルを使用する必要がありますか?
2 に答える
良い例を挙げましょう:
n 個の no があるとします。ユーザーの数 (たとえば、クライアント) 国名を入力として取り、その国の通貨を提供する Bean があります。この場合、Bean は n no に使用できます。ユーザー(クライアント)の。クライアントの要求ごとに個別の Bean を作成しても意味がありません。そのため、複数のクライアントに提供できる Bean が存在する可能性があり、そのような Bean はステートレス Bean として知られています。ステートレス Bean は、クライアントにサービスを提供した後、破棄せずに Bean プールに移動するため、他のクライアントにサービスを提供できます。
では、別の例を見てみましょう。
ショッピング カートには、アイテムのリストを格納できる Bean があります。たとえば、オンライン ショッピング中にアイテムを追加する場合、アイテムは、専用に作成された 1 つの Bean に保持されます。その寿命は、買い物を終えるまでです。したがって、オンラインで買い物を始めると、別の Bean が作成されます。したがって、ステートフルと呼ばれる理由は、セッション全体で状態がアクティブなままであるためです。つまり、最初のアイテムの追加を開始してから n no を追加するまでです。商品をカートに入れ、最終注文を行います。
ステートレス Bean: Bean は複数のクライアントにサービスを提供できます (1 つのクライアントによる変更は、他のクライアントに反映されます)。ステートレス Bean が使用されなくなったら、破棄せずに Bean プールに移動するため、将来は他のクライアントにサービスを提供できます。
ステートフル Bean: 1 つのクライアントに対して 1 つの Bean のみ。(他のクライアントはこの Bean を使用しないため、1 つのクライアントによる変更はそのクライアントのみに適用されます)。そのため、サービスが終了すると、破棄されます。
呼び出し間でクライアントの状態を維持する必要がある場合は、何を推測する必要がありますか? そうです、ステートフル Bean です。状態を気にしない場合 - ステートレス Bean が正しい選択です。