dao が状態を保持しないことは論外です。
しかし、クラスに最も簡単にアクセスするには、prototype(=new every time) と singleton のどちらを使用する方がよいでしょうか?
単純なオブジェクトの作成はdaoにとって安価です..通常、sessionfactoryのみを保持し、シングルトンのリストからオブジェクトにアクセスすると、同様に高価になる場合があります.
明確化: この質問の焦点は、daos の範囲設定に共通の規則があるかどうかです。
dao が状態を保持しないことは論外です。
しかし、クラスに最も簡単にアクセスするには、prototype(=new every time) と singleton のどちらを使用する方がよいでしょうか?
単純なオブジェクトの作成はdaoにとって安価です..通常、sessionfactoryのみを保持し、シングルトンのリストからオブジェクトにアクセスすると、同様に高価になる場合があります.
明確化: この質問の焦点は、daos の範囲設定に共通の規則があるかどうかです。
あなたの質問がアーキテクチャに関するものである場合は、DAO を作業単位または実行しているトランザクションにスコープします。これにより、クロストランザクション汚染とスレッド化の問題の可能性が減少します。
質問がパフォーマンスに関するものである場合、答えはプロファイラーにあり、特定のワークロードの正確な数値が得られます。
または、ここで説明するように、プロトタイプをプールと組み合わせて使用します。
またはここ:
編集:明らかに、ここでは春が使用されていると想定しています。そうでなければ、私は謝罪します
これを決定する「完璧な」方法はないという結論に達しました。シングルトン スコープは、Web アプリでそれを行うにはおそらく間違った方法です。これは、リクエストごとに 1 つの異なるセッションを持つことになるためです。したがって、webapp では、リクエスト スコープが正しい答えかもしれませんが、バックグラウンド タスクではなくリクエストでのみ使用している場合に限ります。プロトタイプ スコープは実行可能ですが、そこに複雑なデータを保持していない場合に限ります。