有人可以解釋我什麼時候應該把readOnly
的值設置爲true
,以及當我使用@Transactional
時應該將它設置爲false
?關於設置@transactional的值的疑惑
1
A
回答
4
當您只從數據庫讀取/選擇數據並且不更改任何數據時 - 通過執行更新/插入/刪除。
如果您可以指定readOnly,那麼您應該將其作爲資源密集程度低得多。
2
定義非常簡單:當且僅當您確保沒有更新,插入或刪除操作發生在事務內部時,您可以使用readonly=true
。 這優化了dbms的鎖定行爲(如果支持)。
readonly
默認爲false。
最好的問候,
SAM
編輯
/**
* {@code true} if the transaction is read-only.
* Defaults to {@code false}.
* <p>This just serves as a hint for the actual transaction subsystem;
* it will <i>not necessarily</i> cause failure of write access attempts.
* A transaction manager which cannot interpret the read-only hint will
* <i>not</i> throw an exception when asked for a read-only transaction.
* @see org.springframework.transaction.interceptor.TransactionAttribute#isReadOnly()
*/
boolean readOnly() default false;
1
自定義添加更多的控制您的事務的隔離級別。
如果你知道一個方法是隻讀的,你應該指定它。
隨着readonly = true,您正在向事務管理器說,一個特定的方法只能從DB中讀取。這有兩個好處:首先,它可以比其他的更快,因爲它允許DBMS優化事務(如果支持的話)。其次,它可以幫助您避免死鎖問題(例如特定的表被寫入鎖定時),因爲您確保該方法不會執行INSERT或UPDATE。
但是,在這裏您可以找到關於它的所有細節: http://docs.spring.io/spring/docs/2.5.x/reference/transaction.html
相關問題
- 1. 關於eclipse插件開發的疑惑
- 2. 關於程序錯誤的疑惑C
- 3. 關於NFC標籤尺寸的疑惑
- 4. 關於neo4j HA設置的疑問
- 5. 關於正確設計程序的疑惑C++
- 6. xslt輸出值的疑惑
- 7. 關於設置SQL的困惑
- 8. WordPress的疑惑
- 9. 疑惑
- 10. clezzy有關wso2 ESB的疑惑4.6.0
- 11. 目錄和文件相關的疑惑?
- 12. Java字符串池相關的疑惑
- 13. 對Android的疑惑
- 14. mailkit Sendmail的疑惑
- 15. 關於KMP中預處理表格的疑惑
- 16. 關於FATAL EXCEPTION的疑惑:主要由NullPointerException引起
- 17. 關於調用func和語法的Python疑惑
- 18. 關於greendao實體udpate機制的疑惑
- 19. 關於Eclipse SWT ViewPart及其工具欄的疑惑?
- 20. 關於數據庫物化和散列表的疑惑
- 21. 關於JDBC資源和JDBC連接池的一些疑惑Glassfish
- 22. 關於馮·諾依曼Arcitechture的圖有些疑惑
- 23. 關於網頁設計的疑問
- 24. Perl懷疑編碼疑惑
- 25. Subversion疑惑?
- 26. 疑惑 - matplotlib
- 27. NSnotifiaction疑惑
- 28. Oracle Schema疑惑?
- 29. 導航疑惑
- 30. NSUserDefaults疑惑