0

JPAでJava EEを使用してWebアプリケーションを開発しています。ここで、1 つのインスタンスのために保存する必要があるいくつかの値に出くわしました。例: Web アプリケーションの名前、納税者番号、連絡先データ。これらの値の一部は、CMS によって変更できます。

これらのデータを保存する効率的な方法は何でしょうか?

  • Entity オブジェクト: このオブジェクトを作成して Entity として保存するのは適切ではありません。このようにして、エントリが 1 つだけのテーブルが作成されます。それにアクセスするには、DAOも作成する必要があります。
  • プロパティ ファイル: 新しいバージョンの WAR を実行した後、変更を失いたくありません。次に、プロパティ ファイルを編集するよりも良い解決策があると思います。
  • Applicationscoped Bean: なんらかの理由でアプリケーションを再起動したときにデータが失われるのは望ましくありません。

これらのような値を処理する別のより効率的な方法はありますか? または、これらの方法のいずれかを使用する必要がありますか?もしそうなら、なぜですか?

ご意見ありがとうございます。

4

1 に答える 1

0

あなたのアプリケーションの詳細については、どれが最適かを確実に言えるほどにはわかりませんが、どのタイプの設定ストレージをいつ使用するかについての私の考えは次のとおりです。

  • データベース (設定テーブル) - ソースで何が起こるかに関係なく値が変更される場所、値が環境固有のもの、またはファイル システムをいじりたくない人が値を変更する場所で本当に繁栄します。 (例: 環境で機能が有効になっているかどうか、ある種の要求に対してどのサーバーと通信するか)
  • プロパティ ファイル - クラスター内のマシンごとに設定されるデータがある場合 (ただし、クラスター内のすべてを標準化することをお勧めします)、または CMS がプロパティを設定する主要な (唯一の?) 方法になる場合に適しています。インストールごとにファイルを置き換えます
  • アプリケーション Bean - アプリケーションの起動時に設定が必要です (例: スピンアップする Bean の数、またはデータベース接続文字列)
  • コード内 - 値は決して変更されません...これまで (例: アプリケーション名)

設定を保存する最も効率的な方法は、コードに直接保存することですが、柔軟性に欠けるため、ほとんどの場合、その価値はありません。データベースではなくファイル システムにプロパティを保存することは、データベースにキャッシュがあり、プロパティを取得するたびにデータベースからそれを読み取ると仮定すると、ほぼ同じです。キャッシュがない場合は、プロパティにアクセスするたびにディスク読み取りの代償を払うことになります。プロパティ ファイルは、読み取り後に値をメモリに格納します。

値を簡単に変更できるようにするには、データベースに格納するのが最も簡単な変更方法だと思います (多くの異なる環境で頻繁に変更しないと仮定して)。それはすぐに有効になります。ファイル システム上のファイルにプロパティがある場合は、実行中にアプリケーションに強制的にプロパティを再読み込みさせる方法が必要になるか、アプリケーションをバウンスしてプロパティを変更する必要があります。コードにそれがある場合は、プロパティを有効にするためにビルドを再スピンする必要があります (明らかに)。

于 2012-11-21T16:14:57.160 に答える