原因在最后,這是其中的一個小例子。
如:
SessionFactory負責保存和使用所有配置信息,消耗內存資源非常大
所以一個web項目要保證只創建一個SessionFactory
那么在使用hibernate創建一個工具類(HibernateUtils),用於獲取Session對象時需要將其放在static代碼塊中,
又因下邊的每個方法需要使用SessionFactory對象sf,所以將其單獨拆出放在方法外。
static代碼塊只執行一次原因:
static代碼塊只在類加載時執行,類是用類加載器來讀取的,類加載器是帶有一個緩存區的,
它會把讀取到的類緩存起來,所以在一次虛擬機運行期間,一個類只會被加載一次,這樣的話
靜態代碼塊只會運行一次