Mybatis 範圍和生命週期

2021-09-01 18:49:30 字數 865 閱讀 6286

理解我們目前已經討論過的不同範圍和生命週期類是很重要的。 不正確的使用它們會導致嚴重的併發問題。

sqlsessionfactorybuilder

這個類可以被例項化,使用和丟棄。一旦你建立了 sqlsessionfactory 後,這個類就不需要存在了。因此 sqlsessionfactorybuilder 例項的最佳範圍是方法範圍 (也就是本地方法變數)。 你可以重用 sqlsessionfactorybuilder 來建立多個 sqlsessionfactory 例項, 但是最好的方式是不需要保持它一直存在來保證所有xml 解析資源,因為還有更重要的事情要做。

sqlsessionfactory

一旦被建立,sqlsessionfactory 應該在你的應用執行期間都存在。沒有理由來處理或重新建立它。使用 sqlsessionfactory 的最佳實踐是在應用執行期間不要重複建立多次。 這樣的操作將被視為是非常糟糕的。 因此 sqlsessionfactory 的最佳範圍是應用範圍。 有很多方法可以做到, 最簡單的就是使用單例模式或者靜態單例模式。

sqlsession

每個執行緒都應該有它自己的sqlsession 例項。sqlsession 的例項不能被共享,也是執行緒不安全的。因此最佳的範圍是請求或方法範圍。絕對不能將sqlsession 例項的引用放在乙個類的靜態字段甚至是例項欄位中。 也絕不能將sqlsession 例項的引用放在任何型別的管理範圍中, 比如 serlvet 架構中的httpsession。 如果你現在正用任意的 web 框架, 要考慮sqlsession 放在乙個和 http 請求物件相似的範圍內。換句話說,基於收到的http 請求,你可以開啟了乙個 sqlsession,然後返回響應,就可以關閉它了。關閉 session 很重要,你應該確保使用 finally 塊來關閉它。

mybatis 範圍和生命週期

sqlsessionfactorybuilder 這個類可以被例項化,使用和丟棄。一旦你建立了 sqlsessionfactory 後,這個類就不需要存在了。因此 sqlsessionfactorybuilder 例項的最佳範圍是方法範圍 也就是本地方法變數 sqlsessionfactory 一旦...

Mybatis作用域和生命週期

理解作用域和生命週期類非常重要,如果使用不當,會造成各種各樣的問題 這個類可以被初始 使用和丟棄,如果你已經建立好了乙個 sqlsessionfactory 後就不用再保留它。因此,sqlsessionfactorybuilder 的最好作用域是方法體內,比如說定義乙個方法變數。你可以重複使用sql...

bean的作用範圍和生命週期

springmvc學習記錄文章目錄 1 程式的耦合和解耦思路 2 使用springioc解決程式耦合的前期準備 4 bean標籤及其例項化的3種方式 5 bean的作用範圍和生命週期 6 spring的依賴注入 7 基於註解的ioc環境搭建 8 基於註解的ioc 常用註解 spring2.5規範 9...