知识大全 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相关参考