Hibernate中對事務的管理是默認交給JDBC來管理的。,
所以當執行以下代碼的時候:
session=sessionFactory.openSession()
Transaction tx=session.beginTransaction()
....
tx.commit()
就等于:
Connection dbcon=getConnection()
dbcon.setAutoCommit(False)


dbcon.commit()

所以hibernate并沒有做更多的事,只是將jdbc進行了封裝。
所以我們從sessionFactory.openSession()的時候,autocommit就已經設置為了false
所以無論怎么執行save方法,只要不commit,或flush 就不會對數據庫產生影響。
數據庫加鎖,一般使用LockMode.UPGRADE,保證在統計(查詢)執行過程中,記錄不被其他用戶更新