通常的建議是在不再需要JDBC資源時關閉它。這可以在一個捕獲和最後完成。但是,如果一個DAO方法只能操縱一個域對象,並且一個操作需要一次性檢索/創建這些操作,那該怎麼辦呢?要獲得一個聲明,然後重複關閉它會成爲性能問題?如果是這樣,是否應該採取單獨的方法一次處理多個對象或者應該以某種方式延遲關閉?Dao方法,操作單個/多個對象並關閉資源
2
A
回答
1
你可以在DAO層的頂部添加額外的事務層,並在交易/會話的開始Connection
打電話setAutoCommit(false)
,讓DAO方法使用相同的Connection
實例,然後commit()
的Connection
當交易/會話完成/關閉。但是,您需要更改DAO方法以將Connection
作爲額外參數,或者將其存儲爲ThreadLocal
(但由於可能會彙集線程,因此需要非常仔細地進行此操作)。
只要您始終使用通常在DB端編譯和緩存的PreparedStatement
,創建語句不應該太昂貴。
1
我認爲,如果應用程序是Dao的基礎,這將是沒有區別的。這些資源應該關閉。如果你的工作沒有任何框架(彈簧,休眠等)
java.sql.Connection應該放回池中,如果有一個池。 執行查詢後應關閉ResultSet和Statement對象。
取決於您的架構,這些資源管理代碼可以放在Dao類或其他類中。例如有一些專注於構建和執行SQL查詢的類。資源管理代碼可以在這些類中。
如果您使用某些框架,框架通常會爲您執行資源管理。
相關問題
- 1. 單個資源和多個資源
- 2. Groovy多重資源關閉
- 3. 調用操作方法,關閉對話框並刷新父
- 4. 無法關閉JDBC資源!
- 5. 傳遞多個JSON對象MVC3操作方法
- 6. 這個jdbc資源是關閉的嗎?
- 7. 使用Amazon S3的單個操作下載多個對象
- 8. 多個資源
- 9. 單個對象Django管理操作
- 10. DAO方法檢索單個條目
- 11. 多個GET方法單一的Restlet資源
- 12. 在單個資源中包含多個fhir資源
- 13. 關閉單個廚師食譜或資源的詳細記錄
- 14. 方法級別資源(例如:FileInputStream,Connection)未關閉,對象是否有資格進行垃圾回收,資源是否會關閉?
- 15. 無法對ImageData對象執行多個操作?
- 16. 來自多個可操作對象的Java Swing依賴關係
- 17. Rails單個資源作爲兩個其他資源的嵌套資源
- 18. 試用資源是否可能無法關閉資源?
- 19. 關閉和關閉onDestroy中的對象的最佳方法
- 20. 單個表單的多個操作
- 21. 差異資源關閉
- 22. 如何爲資源指定多個GET操作
- 23. 如何在多個操作中共享一個對象的單個實例?
- 24. 一個對象的共享資源
- 25. DAO執行的幾個操作
- 26. 迭代對象操作或一次更改多個對象
- 27. 爲單個數據源實現DAO
- 28. 對html的多個操作?
- 29. 多個服務層對象應該共享一個DAO嗎?
- 30. @Inject多個DAO