MyBatis之作用域和生命週期(二)

2021-06-27 13:23:05 字數 1428 閱讀 4995

對於這些概念性的東西,總怕自己說不清楚,害怕害了看了我部落格的人,所以抄書,哈哈...

理解作用域和生命週期類非常重要,如果使用不當,會造成各種各樣的問題。

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,...