關於使用事務從數據庫中讀取,似乎有很不同的觀點。只讀數據庫訪問事務?
從developerWorks文章Transaction strategies: Models and strategies overview報價:
爲什麼你會需要一個事務,如果 你只是讀取數據?答案 是你沒有。啓動 交易執行只讀 操作增加了 處理線程的開銷,並可能導致數據庫共享上 讀鎖(視 於你正在使用 數據庫的類型和什麼隔離級別設置 )。
由於相反的意見,有來自Hibernate文檔以下報價Non-transactional data access and the auto-commit mode
我們的建議是在應用程序中不使用 自動提交模式,並 申請只讀只 時交易有一個明顯的表現 好處或當未來的代碼更改 是不太可能的。無論您是讀取數據還是寫入數據,始終優先選擇 常規ACID事務,以便將您的數據訪問操作分組爲 , 或 。
在EclipseLink郵件列表here上也有類似的爭論。
那麼謊言的真相呢?是否閱讀最佳做法的交易?如果兩者都是可行的解決方案,那麼使用交易的標準是什麼?
就我所見,只有當隔離級別高於'讀取提交'時纔會有所作爲。它是否正確?
有什麼經驗和建議?