导航

Hibernate 事务管理

Posted on 2017-10-10 13:59  耍流氓的兔兔  阅读(120)  评论(0编辑  收藏  举报

 

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>