1 <プロパティ名="hibernateProperties">
2 <小道具>
3 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
4 <prop key="hibernate.show_sql">false</prop>
5 <!-- JVM の起動時にデータベース テーブルを自動的に作成/更新します
6 <prop key="hibernate.hbm2ddl.auto">update</prop> -->
7 <!-- PostgreSQL でのエラー メッセージを改善するにはバッチ処理をオフにします
8 <prop key="hibernate.jdbc.batch_size">100</prop> -->
9 <prop key="hibernate.jdbc.batch_size">50</prop>
10 </小道具>
11 </プロパティ>
フェッチ サイズを大きく設定すると、データベースの読み取り回数が減り、速度が速くなります。フェッチ サイズを小さくすると、データベースの読み取り回数が増え、速度が遅くなります。
2. 非常に大規模なシステムの場合は、htm ファイルを生成することをお勧めします。ページのプロモーションをスピードアップします。
3. すべての責任を休止状態に負わせず、コードをリファクタリングし、データベースの操作を減らし、データベース クエリ中に in 操作を使用しないようにし、再帰的なクエリ操作を避けるようにしてください。コードの品質とシステム設計の合理性が決定します。システムのパフォーマンスレベル。
4. 大量のデータをクエリする場合は、クエリ結果が返されるように注意して list() または iterator() を使用します。
(1). List() を使用して結果を返す場合、結果セットが大きい場合、Hibernate はすべてのクエリ結果を永続オブジェクトに初期化します。
(2). iterator() を使用して結果を返す場合、Hibernate は、iterator.next() が呼び出されてオブジェクトが返されるたびに、クエリを呼び出して対応するオブジェクトを初期化し、大量のデータに対してそのオブジェクトを使用します。もっと時間をかけてください。結果セットが大きいが同じデータが大量に含まれる場合、または結果セットのすべてが使用されない場合には、 iterator() を使用すると有利です。
5. 1 対多および多対 1 の関係では、遅延ロード メカニズムを使用すると、多くのオブジェクトが使用時に初期化され、メモリ領域が節約され、データベースおよびコレクションの負荷が軽減されます。 in PO 使用しないときは、データベース間の相互作用が減り、処理時間が短縮されます。
6. 関連する PO (永続オブジェクト) がある場合、default-cascade="all" または "save-update" が使用されている場合、新しい PO を追加するときは、PO 内のコレクションの割り当て操作に注意してください。更新操作が複数回実行される可能性があるためです。
7. 大量のデータの追加、変更、削除、または大量のデータのクエリなどの操作の場合、データベースとの対話の数が処理時間を決定する最も重要な要素です。対話の数を減らすことが最善の方法です。効率を向上させるため、開発プロセス中は show_sql を true に設定し、Hibernate の処理プロセスを深く理解し、効率を向上させるためにさまざまな方法を試してください。できる限り各ページを表示し、データベースに対する操作を 100 ~ 150 項目未満に減らすようにしてください。少ないほど良いです。
上記は、Struts+Hibernate+Spring を使用したプロジェクト開発中の Hibernate パフォーマンスの最適化に関するいくつかの考えです。