私は単純な Java EE 5 の「ルーティング」アプリケーションを開発しています。MQ キューからのさまざまなメッセージが最初に変換され、特定のフィールドの値に従って、さまざまなデータ ソースに格納されます (さまざまな ds のストアド プロシージャを呼び出す必要があります)。
たとえば、valueX -> dataSource1、valueY -> dataSource2 です。すべてのデータソースは、異なる jndi エントリを使用してアプリケーション サーバーにセットアップされます。通常、アプリの実行中にルーティング情報は変更されないため、データソース ルックアップをキャッシュするために保存しますか? たとえば、valueX->DataSource1 を格納するハッシュマップを保持するシングルトンを実装します。特定のエントリがリストにない場合は、リソース ルックアップを実行し、結果をマップに保存します。キャッシュを使用するとパフォーマンスが向上しますか? または、これらのリソース ルックアップは十分に高速ですか?
一般的に、この種のキャッシュを構築する最良の方法は何ですか? 他のデータベース検索にもキャッシュを使用できます。たとえば、マッピング valueX -> リソース名は、DB の単純なテーブルで定義されます。必要に応じて値を検索して結果をマップに保存するか、常に検索を行うか、起動時にすべてのエントリを読み取って保存する方がよいでしょうか? アクセスを同期する必要がありますか? 「列挙」シングルトン実装を作成できますか?