理解作用域和生命週期類非常重要,如果使用不當,會造成各種各樣的問題
這個類可以被初始、使用和丟棄,如果你已經建立好了乙個 sqlsessionfactory 後就不用再保留它。因此,sqlsessionfactorybuilder 的最好作用域是方法體內,比如說定義乙個方法變數。你可以重複使用sqlsessionfactorybuilder 生成多個 sqlsessionfactory 例項, 但是最好不要強行保留, 因為 xml 的解析資源要用來做其它更重要的事。
每個執行緒都有自己的 sqlsession 例項,sqlsession 例項是不能被共享,也是不是執行緒安全的。因此最好使用 request 作用域或者方法體作用域。不要使用類的靜態變數來引用乙個 sqlsession 例項,甚至不要使用類的乙個例項變更來引用。永遠不要在乙個被管理域中引用 sqlsession,比如說在 servlet 中的httpsession 中。如果你正在使用 web 框架,應該讓 sqlsession 跟隨 http 請求的相似作用域。也就是說,在收到乙個 http 請求過後,開啟 sqlsession,等返回乙個回應以後,立馬關掉這個 sqlsession。 關閉 sqlsession 是非常重要的。你必須要確保 sqlsession 在 finally 方法體中正常關閉。
可以使用下面的標準方式來關閉:
sqlsession session = sqlsessionfactory.opensession();
try finally
使用這種模式來貫穿你的所有**, 以確保所有資料庫資源都被完全關閉。[這是假定不是使用你自己的資料庫連線,而是使用 mybatis 來管理你的資料庫連線資源]
sqlsession session = sqlsessionfactory.opensession();
try finally
MyBatis之作用域和生命週期(二)
對於這些概念性的東西,總怕自己說不清楚,害怕害了看了我部落格的人,所以抄書,哈哈.理解作用域和生命週期類非常重要,如果使用不當,會造成各種各樣的問題。1 sqlsessionfactorybuildesqlsessionfactorybuilder plain view plain copy pri...
生命週期和作用域 mybatis執行流程
流程 sqlsessionfactory 例項化後 transactional事務管理 建立executor執行器 建立sqlsession 實現增刪改查 失敗則回到事務,成功提交事務 sqlsessionfactorybuilder 工廠的創造者 這個類可以被例項化 使用和丟棄,一旦建立了 sql...
作用域和生命週期
1.作用域 可見性 作用域 可見性 指識別符號能夠被使用的範圍 只有在作用域內識別符號才可以被使用。此階段針對編譯和鏈結過程 1 函式中定義的識別符號,包括形參和函式體中定義的區域性變數,作用域都在該函式內,也稱作函式域。2 檔案作用域也稱全域性作用域。定義在所有函式之外的識別符號,具有檔案作用域,...