电话:0731-83595998
导航

J2EE综合--Hibernate的事务处理机制

来源: 2017-12-21 14:28

  Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transaction的封装,下面我们详细的分析:
  
  Hibernate可以配置为JDBCTransaction或者是JTATransaction,这取决于你在hibernate.properties中的配置:
  
  #hibernate.transaction.factory_class
  net.sf.hibernate.transaction.JTATransactionFactory
  #hibernate.transaction.factory_class
  net.sf.hibernate.transaction.JDBCTransactionFactory
  
  如果你什么都不配置,默认情况下使用JDBCTransaction,如果你配置为:
  
  hibernate.transaction.factory_class
  net.sf.hibernate.transaction.JTATransactionFactory
  
  将使用JTATransaction,不管你准备让Hibernate使用JDBCTransaction,还是JTATransaction,我的忠告就是什么都不配,将让它保持默认状态,
  
  #hibernate.transaction.factory_class
  net.sf.hibernate.transaction.JTATransactionFactory
  #hibernate.transaction.factory_class
  net.sf.hibernate.transaction.JDBCTransactionFactory
  
  在下面的分析中我会给出原因。
  
  一、JDBC Transaction
  
  看看使用JDBC Transaction的时候我们的代码例子:
  
  Session session = sf.openSession();
  Transaction tx = session.beginTransactioin();
  ...
  session.flush();
  tx.commit();
  session.close();
  
  这是默认的情况,当你在代码中使用Hibernate的Transaction的时候实际上就是JDBCTransaction。那么JDBCTransaction究竟是什么东西呢?来看看源代码就清楚了:
  
  Hibernate2.0.3源代码中的类
  
  net.sf.hibernate.transaction.JDBCTransaction:
  
  public void begin() throws HibernateException {
  ...
  if (toggleAutoCommit) session.connection().setAutoCommit(false);
  ...
  }
  
  这是启动Transaction的方法,看到 connection().setAutoCommit(false) 了吗?是不是很熟悉?
  
  再来看
  
  public void commit() throws HibernateException {
  ...
  try {
  if ( session.getFlushMode()!=FlushMode.NEVER ) session.flush();
  try {
  session.connection().commit();
  committed = true;
  }
  ...
  toggleAutoCommit();
  }
  
  这是提交方法,看到connection().commit() 了吗?下面就不用我多说了,这个类代码非常简单易懂,通过阅读使我们明白Hibernate的Transaction都在干了些什么?我现在把用Hibernate写的例子翻译成JDBC,大家就一目了然了:
  
  Connection conn = ...;

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端