重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

怎么直接使用Hibernate

这篇文章主要为大家展示了“怎么直接使用Hibernate”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么直接使用Hibernate”这篇文章吧。

在德清等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站制作 网站设计制作按需网站设计,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站建设,成都外贸网站建设公司,德清网站建设费用合理。

在直接使用Hibernate时,要在事务结束的时候,写上一句:tx.commit(),这个commit()的源码为:

public void commit() throws HibernateException {  if (!begun) {  throw new TransactionException("Transaction not successfully started");  }   log.debug("commit");   if (!transactionContext.isFlushModeNever() && callback) {  transactionContext.managedFlush(); // if an exception occurs during  // flush, user must call  // rollback()  }   notifyLocalSynchsBeforeTransactionCompletion();  if (callback) {  jdbcContext.beforeTransactionCompletion(this);  }   try {  commitAndResetAutoCommit();//重点代码,它的作用是提交事务,并把connection的autocommit属性恢复为true  log.debug("committed JDBC Connection");  committed = true;  if (callback) {  jdbcContext.afterTransactionCompletion(true, this);  }  notifyLocalSynchsAfterTransactionCompletion(Status.STATUS_COMMITTED);  } catch (SQLException e) {  log.error("JDBC commit failed", e);  commitFailed = true;  if (callback) {  jdbcContext.afterTransactionCompletion(false, this);  }  notifyLocalSynchsAfterTransactionCompletion(Status.STATUS_UNKNOWN);  throw new TransactionException("JDBC commit failed", e);  } finally {  closeIfRequired();  }  }

上面代码中,commitAndResetAutoCommit()方法的源码如下:

private void commitAndResetAutoCommit() throws SQLException {  try {  jdbcContext.connection().commit();  //这段不用说也能理解了  } finally {  toggleAutoCommit();  //这段的作用是恢复connection的autocommit属性为true  }  }

上述代码的toggleAutoCommit()源代码如下:

private void toggleAutoCommit() {  try {  if (toggleAutoCommit) {  log.debug("re-enabling autocommit");  jdbcContext.connection().setAutoCommit(true);  //这行代码的意义很明白了吧  }  } catch (Exception sqle) {  log.error("Could not toggle autocommit", sqle);  }  }

因此,如果你是直接使用Hibernate,并手动管理它的session,并手动开启事务关闭事务的话,完全可以保证你的事务(好像完全是废话)。

以上是“怎么直接使用Hibernate”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享题目:怎么直接使用Hibernate
转载注明:http://cqcxhl.com/article/jppdgj.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP