3

トランザクションを読み取り専用としてマークすると、Spring は何をしますか? どのような改善/欠点が期待できますか?

4

1 に答える 1

2

Springのドキュメントによると、

読み取り専用ステータス: 読み取り専用トランザクションは、コードがデータを読み取るが変更しない場合に使用できます。読み取り専用トランザクションは、Hibernate を使用している場合など、場合によっては最適化に役立ちます。

この属性はプロバイダーへのヒントにすぎません。この場合、動作は Hibernate に依存します。

readOnly を true に指定すると、現在の Hibernate セッションでフラッシュ モードが FlushMode.NEVER に設定され、セッションがトランザクションをコミットできなくなります。

さらに、setReadOnly(true) が JDBC 接続で呼び出されます。これは、基礎となるデータベースへのヒントでもあります。データベースでサポートされている場合 (ほとんどの場合サポートされています)、これは基本的に FlushMode.NEVER と同じ効果がありますが、手動でフラッシュすることさえできないため、より強力です。

詳しくはリンク先をご覧ください。

于 2012-10-03T07:56:30.603 に答える