0

1 つ、2 つ、または一部の列のみにアクセスしたいシナリオが何度もあり、休止状態を使用しているため、どちらがパフォーマンスに優れているかを知りたい

1) hibernate のfindByIdメソッドをフェッチすることによって、これを呼び出すだけでよいので非常に便利ですが、一部の列だけを必要とするのではなく、すべての列をフェッチするため、パフォーマンスが良くないと思います。

2)または毎回クエリを作成するのは面倒ですが、パフォーマンスが向上します

だから私は何を使うべきかについての提案が欲しいですか?

4

2 に答える 2

0

より具体的に答えるには、コード スニペットを含めていただけると助かります。ただし、一般的には、findById は便利なメソッドであり、自分で記述したものと非常によく似たクエリが得られます。そのため、クエリを自分で作成し、必要な列のみを返す (コンストラクター式が便利です) 方が、パフォーマンスの面で優れています。私が尋ねる質問は、より複雑なコードに値するパフォーマンスの向上ですか? クエリは後でいつでも最適化できます。

于 2013-10-26T08:48:23.653 に答える
0

ロードされているエンティティに完全に依存します。エンティティが 1 つで、多数の関係があり、必要なのはルート エンティティ内のいくつかのフィールドだけである場合、HibernateJOINがエンティティをロードするために s を使用してクエリを生成するため、独自のクエリを作成する価値があります。これは非常にコストがかかる可能性があります。ここで考慮すべきもう 1 つのことは、ロード中のフィールドは常に使用LAZYまたはEAGERロードで処理できますが、これらの設定は静的であり、エンティティに永続的に適用されるということです。
一方、エンティティに多くの関係がない場合、最もコストのかかる部分は DB とアプリケーション間の会話時間であると考えられるため、多くの余分なフィールドの読み込みは無視できます。

于 2013-10-26T13:36:07.337 に答える