0

これは私の最初の投稿です。私が現在取り組んでいるプログラムに関する問題について、すでに多くの有用なヒントを見つけました。ありがとう! しかし、私はまだ自分自身に質問があり、これはもう少し一般的かもしれません.

私は卒業論文のために Java プログラムを構築しています。これは RSS リーダーです (そのために ROME を使用しています)。すべての着信エントリは (MAUI を使用して) 自動的にタグ付けされ、以前のエントリに対してユーザーが付けた評価に応じて "関連性スコア" が与えられます (そのアルゴリズムはまだ作業中です)。すべてのフィードとそれに属するエントリが一覧表示される SWING GUI があり、ユーザーはタグを表示し、新しいタグを追加し (MAUI 機械学習は将来のタグ付けを改善するためにそれらを取得します)、エントリの評価を与えることができます。

これまでのところ、すべての基本機能を実装しており、問題なく動作しています。ただし、現在のアプローチに従えば、すべてのフィードがデータベースと GUI に保存されることを考えると、このプログラムのパフォーマンスについて疑問に思っています。

簡単にするために、オブジェクト Ressource と Entry があります。リソースは RSS フィードであり、エントリはすべて「RSS ニュース」です。各リソースには x エントリがありますが、エントリは 1 つのリソースに属します。これが、DB2 と JPA アノテーションでモデル化した方法です。実行時に、すべてのリソースを含むリストを作成します(Entitymanagerで呼び出す名前付きクエリとして「SELECT * FROM RESSOURCES」を使用)。その時点で、リソース エントリにアクセスして、GUI のリストにそれらを入力できます。結構です - 私はそれが好きです。最初からDBからすべての情報を取得し、Javaオブジェクトに変換します。これまでのところ、数百の RSS エントリがあり、プログラムには約 7MB のメモリが必要です。

BUT: エントリが 1 万あるとすぐにどうなるでしょうか。プログラムは大量のメモリを必要とするのではないでしょうか? JPA にロードするように指示するにはどうすればよいですか。リソースごとに 100 エントリ (JPA で Ressource オブジェクトを取得する場合) としましょう。

自分でクエリを実行することでこの問題を回避する方法があるかもしれないことは知っていますが、私の言いたいことを理解していただければ幸いです - すべてのデータベースを常にオブジェクトに変換せずに標準の JPA 機能を使用したいので、大量のメモリが必要になります。

助けてくれてありがとう、マティアス

4

1 に答える 1

1

たとえば Google と同じように、ページネーションを使用します。すべてのエントリをロードする代わりに、最初の 100 個のエントリをロードし、100 エントリの次のページをロードできるようにします。

クラスで参照setMaxResults()setFirstResult()てください。Query

また、GUI に検索フォームを追加してください。探しているものを見つけるために 10,000 のエントリを参照することは、誰もやりたくないことです。

于 2013-01-07T18:58:20.677 に答える