對於這些概念性的東西,總怕自己說不清楚,害怕害了看了我部落格的人,所以抄書,哈哈...
理解作用域和生命週期類非常重要,如果使用不當,會造成各種各樣的問題。
1.sqlsessionfactorybuildesqlsessionfactorybuilder
[plain]view plain
copy
print?
這個類可以被初始、使用和丟棄,如果你已經建立好了乙個sqlsessionfactory 後就不用再保留它。因此,
sqlsessionfactorybuilder 的最好作用域是方法體內, 比如說定義乙個方法變數。你可以重複使用
sqlsessionfactorybuilder 生成多個sqlsessionfactory 例項,但是最好不要強行保留,因為xml 的解析資
源要用來做其它更重要的事。
2.sqlsessionfactory
[plain]view plain
copy
print?
一旦建立,sqlsessionfactory 就會在整個應用過程中始終存在。所以沒有理由去銷毀和再建立它,乙個
應用執行中也不建議多次建立sqlsessionfactory。如果真的那樣做,會顯得很拙劣。因此sqlsessionfactory
而這既不是廣泛贊成和好用的。反而,使用google guice 或spring 來進行依賴反射會更好。這些框架允
許你生成管理器來管理sqlsessionfactory 的單例生命週期。
3.sqlsession
[plain]view plain
copy
print?
每個執行緒都有自己的sqlsession 例項,sqlsession 例項是不能被共享,也是不是執行緒安全的。因此最好
使用request 作用域或者方法體作用域。不要使用類的靜態變數來引用乙個sqlsession 例項,甚至不要
使用類的乙個例項變更來引用。永遠不要在乙個被管理域中引用sqlsession ,比如說在servlet 中的
httpsession 中。如果你正在使用web 框架,應該讓sqlsession 跟隨http 請求的相似作用域。也就是
說,在收到乙個http 請求過後,開啟sqlsession,等返回乙個回應以後,立馬關掉這個sqlsession。關
閉sqlsession 是非常重要的。你必須要確保sqlsession 在finally 方法體中正常關閉。可以使用下面的標
準方式來關閉:
sqlsession session = sqlsessionfactory.opensession();
try finally finally
mybatis的作用域(Scope)和生命週期
sqlsessionfactorybuilder 這個類可以被例項化 使用和丟棄,一旦建立了 sqlsessionfactory,就不再需要它了。因此 sqlsessionfactorybuilder 例項的最佳作用域是方法作用域 也就是區域性方法變數 你可以重用 sqlsessionfactory...
Mybatis作用域和生命週期
理解作用域和生命週期類非常重要,如果使用不當,會造成各種各樣的問題 這個類可以被初始 使用和丟棄,如果你已經建立好了乙個 sqlsessionfactory 後就不用再保留它。因此,sqlsessionfactorybuilder 的最好作用域是方法體內,比如說定義乙個方法變數。你可以重複使用sql...
python之作用域
跟很多程式語言一樣,python中也有作用域的使用 函式和變數分有公開的以及非公開的 正常的函式和變數名是公開的 public 比如abc,x123,pi 類似 這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,我們自己的變數一般不用這種變數名 類似 和 的函式和變數就是非公開的private,...