0

In Entity Framework there is an option called AutoDetectChangesEnabled which significantly improves performance when performing bulk operations.

Is there any equivalent in Hibernate, which could improve performance while selecting/inserting many records to the database? Or maybe the question should be, is such really needed?

4

1 に答える 1

1

多くのオプションがあります:

  • Session.setDefaultReadOnly()- に直接相当するように見えますAutoDetectChangesEnabled。ただし、変更の検出を無効にするだけで、他の機能に必要なため、セッション キャッシュは有効のままにします。したがって、パフォーマンスにのみ影響し、メモリ消費には影響しません。

  • StatelessSession- セッション キャッシュがなく (エンティティへの参照をまったく保持しない)、Sessionそのため通常の多くの機能が欠けています

  • この問題に対するもう 1 つの一般的なアプローチはclear()、処理中にセッションを定期的に (たとえば、100 エンティティごとに) (またはevict()個々のエンティティを手動で) 処理することです。Sessionこのアプローチは、エンティティが不要になったときにエンティティを破棄する一方で、通常のセマンティクスを維持するため、以前のオプションの利点を組み合わせたものです。

于 2013-09-08T22:38:20.347 に答える