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,保证在统计(查询)执行过程中,记录不被其他用户更新