1

検索アプリケーションでは、ファイルとその場所を追跡する必要があります。現在、これにはデータベース テーブルを使用していますが、そのようなデータを取得する必要があるたびにデータベースに接続する必要があるため、これは明らかに効率的ではありません。テーブルをメモリにロードして使用できる方法はありますか? メモリ内にある間は変更する必要はありません。

ありがとう!

4

4 に答える 4

2

1 つのテーブルをメモリに取得するだけの場合は、1 つの SELECT ステートメントでこれを実行できます。ResultSet から Map のようなコレクションを構築できます。その後、マップから必要な情報を取得します。

于 2011-06-03T08:11:52.063 に答える
1

HSQLDBDerbyH2など、メモリ内モードを持ついくつかのJavaデータベースのいずれかにデータを取り込むことができます。また、 SQLiteもご覧ください。これは、特にJavaではありませんが、StackOverflowのこのQ&Aで説明されているように、さまざまなJavaコネクタを備えています。

ただし、照会が必要になるたびにDBに接続する必要はありません。接続プールを使用して、再利用できる一連の接続を管理できます。通常、主な遅延は接続の確立であるため、これによりクエリごとのオーバーヘッドが非常に大きくなる可能性があります。

于 2011-06-03T08:02:01.047 に答える
1

Ehcache、Memcache、Coherence などのキャッシング製品のいずれかを使用することもできます。私はEhacheの使用についてある程度の知識を持っています。特定のクエリ、エンティティ オブジェクト、または POJO をキャッシュするように Hibernate を構成します。同じ条件での後続のすべての検索は、キャッシュからフェッチされます。

他の製品でも同様の機能が提供されていると思います。

于 2011-06-03T08:37:03.037 に答える
0

「メモリ内にある間は変更する必要はありません」というあなたの文。質問のタイトルを反映していません。使用後にデータをコミットに変更したいようです。

単純にアプリをスピードアップしたいのであれば、データをある種の変数に保存してみませんか? 開発ツールによっては、ある種のセッション変数である可能性があります。

于 2011-06-03T08:13:28.630 に答える