トランザクションを読み取り専用としてマークすると、Spring は何をしますか? どのような改善/欠点が期待できますか?
1 に答える
2
Springのドキュメントによると、
読み取り専用ステータス: 読み取り専用トランザクションは、コードがデータを読み取るが変更しない場合に使用できます。読み取り専用トランザクションは、Hibernate を使用している場合など、場合によっては最適化に役立ちます。
この属性はプロバイダーへのヒントにすぎません。この場合、動作は Hibernate に依存します。
readOnly を true に指定すると、現在の Hibernate セッションでフラッシュ モードが FlushMode.NEVER に設定され、セッションがトランザクションをコミットできなくなります。
さらに、setReadOnly(true) が JDBC 接続で呼び出されます。これは、基礎となるデータベースへのヒントでもあります。データベースでサポートされている場合 (ほとんどの場合サポートされています)、これは基本的に FlushMode.NEVER と同じ効果がありますが、手動でフラッシュすることさえできないため、より強力です。
詳しくはリンク先をご覧ください。
于 2012-10-03T07:56:30.603 に答える