Hibernate事务管理:
Hibernate本身没有实现自己的事务管理功能,而是对底层JDBC事务或JTA事务的轻量级封装
Hibernate将底层的JDBCTransaction或JTATransaction进行了封装,再在外面套上Transaction和session的外壳,其实是通过委托底层的JDBC或JTA来实现事务的处理功能
Hibernate的事务工厂类可以设置成JDBCTransactionFactory或者JTATransactionFactory。如果不进行配置,Hibernate就会认为系统使用的事务是JDBC事务
在JDBC的提交模式(commit mode)中,如果数据库连接是自动提交模式(auto commit mode),那么在每一条SQL语句执行后事务都将被提交,提交后如果还有任务,那么一个新的事务又开始了
Hibernate在Session控制下,在取得数据库连接后,就立刻取消自动提交模式,即Hibernate在一个执行Session的beginTransaction()方法后,就自动调用JDBC层的setAutoCommit(false)。如果想自己提供数据库连接并使用自己的SQL语句,为了实现事务,那么一开始就要把自动提交关掉(setAutoCommit(false)),并在事务结束时提交事务
参考链接:http://blog.csdn.net/lifaming15/article/details/2564660
<!-- 事务的隔离级别 --> <property name="hibernate.connection.isolation">4</property> <!-- 让session被ThreadLocal管理 --> <property name="current_session_context_class">thread</property>