問題1:到底該用getTransaction還是beginTransaction?
上圖說明的問題:
第1步,調(diào)用session.getTransaction()的時候,會創(chuàng)建一個全新的Transaction對象;
第2步,調(diào)用session.beginTransaction()的時候,會創(chuàng)建一個全新的Transaction對象,沒有使用上一步的Transaction對象哦;
第3步,再次調(diào)用session.getTransaction()的時候,會看到這時返回的是第2步創(chuàng)建的Transaction對象;
第4步,這時調(diào)用session.getCurrentTransaction(),會看到仍然返回第2步創(chuàng)建的Transaction對象;
結(jié)論:通常情況下一個session內(nèi)只會處理一個事務(wù),所以大多數(shù)時候可直接調(diào)用session.beginTransaction()方法創(chuàng)建一個全新的transaction對象,并開始該事務(wù)。