mybatis 範圍和生命週期

2021-07-24 03:15:18 字數 954 閱讀 6272

sqlsessionfactorybuilder:

這個類可以被例項化,使用和丟棄。一旦你建立了 sqlsessionfactory 後,這個類就不需要存在了。

因此 sqlsessionfactorybuilder 例項的最佳範圍是方法範圍(也就是本地方法變數)。

sqlsessionfactory:

一旦被建立,sqlsessionfactory 例項應該在你的應用程式執行期間都存在。沒有理由來處理或重新建立它。使用 sqlsessionfactory 的最佳實踐是在應用程式執行期間不要重複

建立多次。這樣的操作將被視為是非常糟糕的。因此 sqlsessionfactory 的最佳範圍是應用範圍。有很多方法可以做到,最簡單的就是使用單例模式或者靜態單例模式。然而這兩

種方法都不認為是最佳實踐。這樣的話,你可以考慮依賴注入容器,比如 google guice 或 spring。這樣的框架允許你建立支援程式來管理單例 sqlsessionfactory 的生命週期。

sqlsession:

每個執行緒都應該有它自己的 sqlsession 例項。sqlsession 的例項不能共享使用,它也是執行緒不安全的。因此最佳的範圍是請求或方法範圍。

絕對不能將 sqlsession 例項的引用放在乙個類的靜態字段甚至是例項欄位中。也絕不能將 sqlsession 例項的引用放在任何型別的管理範圍中,比如 serlvet 架構中的

httpsession。如果你現在正用任意的 web 框架,要考慮sqlsession 放在乙個和 http 請求物件相似的範圍內。換句話說,基於收到的 http 請求,你可以開啟了乙個

sqlsession,然後返回響應,就可以關閉它了。關閉 session 很重要,你應該確保使用 finally 塊來關閉它。例如:

sqlsession session = sqlsessionfactory.opensession();

try finally finally

Mybatis 範圍和生命週期

理解我們目前已經討論過的不同範圍和生命週期類是很重要的。不正確的使用它們會導致嚴重的併發問題。sqlsessionfactorybuilder 這個類可以被例項化,使用和丟棄。一旦你建立了 sqlsessionfactory 後,這個類就不需要存在了。因此 sqlsessionfactorybuil...

Mybatis作用域和生命週期

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

bean的作用範圍和生命週期

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