フォーム データベースにクエリを実行して入力ストリームに配置された画像を表示する必要があります。しかし、問題は、データベースに配置されたページに多くの画像があることです。データベースから各画像を選択して xhtml ページに表示するには、多くのクエリが必要です。1 つのマネージド Bean で、すべての画像が入力ストリームのリストに配置され、各要素をページ内の画像として表示したいと考えています。実際、私の要件は、入力ストリームから画像を読み取り、xhtml ページに表示することです。
2 に答える
データベースから各画像を選択して xhtml ページに表示する場合、多くのクエリが必要です
それはどのように正確に問題を形成しますか?パフォーマンスを測定しましたか?ボトルネックは本当に「多くのクエリ」にありますか? なぜそれがボトルネックになるのか、私には本当にわかりません。適切に設計されたデータモデルを使用すると、非常に高速になるはずです。自尊心のある SQL データベースは、まさにこの目的のために設計されています。
あなたのボトルネックは、実際には DB 接続を作成するステップではなく、接続プールを使用していないため、すべてのクエリでそれを行っていますか? もしそうなら、そうです、それが非常に遅く実行されることは理解できます. DB 接続の確立は 100 ~ 500 ミリ秒ほど遅くなる可能性があります。それがまさに、接続プールがずっと前に発明された理由です。接続は「アイドル時間」中にのみ初期化および消去され、スレッドセーフな方法で共有/再利用されるため、そこから接続を取得するのは10ミリ秒程度である必要があります。
適切な接続プールを使用するようにデータ層を修正すると、特定のジョブに適したツールであるサーブレットを引き続き使用できます。
Richfaces を使用している場合は、使用し<ui:repeat>
て画像のリストを反復処理し、使用<a4j:mediaoutput>
して xhtml に画像を表示できます。example 、 a4j:mediaOutput を正しく使用する方法
と別の例も参照してください。