知识大全 Hibernate 基于JDBC的事务[1]

Posted

篇首语:人非圣贤,孰能无过。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate 基于JDBC的事务[1]相关的知识,希望对你有一定的参考价值。

Hibernate 基于JDBC的事务[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Hibernate 是JDBC 的轻量级封装 本身并不具备事务管理能力 在事务管理层 Hibernate将其委托给底层的JDBC或者JTA 以实现事务管理和调度功能

  Hibernate的默认事务处理机制基于JDBC Transaction 我们也可以通过配置文件设定采用JTA作为事务管理实现

  Java代码

<hibernate configuration>    <session factory>    ……    <property name= hibernate transaction factory_class >    net sf hibernate transaction JTATransactionFactory    <! net sf hibernate transaction JDBCTransactionFactory >    </property>    ……    </session factory>    </hibernate configuration>  <hibernate configuration><session factory>……<property name= hibernate transaction factory_class >net sf hibernate transaction JTATransactionFactory<! net sf hibernate transaction JDBCTransactionFactory ></property>……</session factory></hibernate configuration>

  基于JDBC的事务管理将事务管理委托给JDBC 进行处理无疑是最简单的实现方式 Hibernate 对于JDBC事务的封装也极为简单

  我们来看下面这段代码

  Java代码

session = sessionFactory openSession();    Transaction tx = session beginTransaction();    ……    tx mit();  session = sessionFactory openSession();Transaction tx = session beginTransaction();……tx mit();从JDBC层面而言 上面的代码实际上对应着 Java代码 Connection dbconn = getConnection();    dbconn setAutoCommit(false);    ……    dbconn mit();  Connection dbconn = getConnection();dbconn setAutoCommit(false);……dbconn mit();

  就是这么简单 Hibernate并没有做更多的事情(实际上也没法做更多的事情) 只是将这样的JDBC代码进行了封装而已

  这里要注意的是 在sessionFactory openSession()中 hibernate会初始化数据库连接 与此同时 将其AutoCommit 设为关闭状态(false) 而其后 在Session beginTransaction 方法中 Hibernate 会再次确认Connection 的AutoCommit 属性被设为关闭状态( 为了防止用户代码对session 的Connection AutoCommit属性进行修改)

cha138/Article/program/Java/ky/201311/29042

相关参考