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