データベースからの読み取りにトランザクションを使用することについては、非常に異なる意見があるようです。 developerWorksの記事Transaction strategies: Models and strategies overviewから読み取り専用DBアクセスのトランザクション?
引用:
は、なぜあなたはデータのみを読んでいる 場合、トランザクションを必要とするでしょうか?答えは ではありません。読み取り専用の 操作を実行するために トランザクションを開始すると 処理スレッドのオーバーヘッドが追加され、データベース(あなたが を使用しているデータベースの種類に に依存し、どのような分離レベルが設定されている上の共有 読み取りロックを引き起こす可能性があります から)。 Hibernateのドキュメントからの反対意見として
次の引用があるNon-transactional data access and the auto-commit mode
私たちの推薦は とき、読み取り専用トランザクションを適用するために、アプリケーションで 自動コミット・モードを使用しないことであり、 明白なパフォーマンス の利点があるか、または将来のコード変更 が非常に起こりそうもありません。常に 通常のACIDトランザクションを使用して、 データを読み取るかどうかに関係なく、 データアクセス操作 をグループ化することをお勧めします。
また、EclipseLinkメーリングリストhereにも同様の議論があります。
だからどこが真実ですか?ベストプラクティスを読むための取引ですか?どちらも実行可能なソリューションであれば、トランザクションを使用する基準は何ですか?
私の知る限り、分離レベルが 'read committed'よりも高い場合にのみ違いが見られます。これは正しいです?
どのような経験や推奨事項がありますか?