成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談如何直接使用Hibernate

開發(fā) 后端
這里介紹如果你是直接使用Hibernate,并手動管理它的session,并手動開啟事務(wù)關(guān)閉事務(wù)的話,完全可以保證你的事務(wù)。

學習Hibernate時,經(jīng)常會遇到直接使用Hibernate問題,這里將介紹直接使用Hibernate問題的解決方法。

在直接使用Hibernate時,要在事務(wù)結(jié)束的時候,寫上一句:tx.commit(),這個commit()的源碼為:

  1. public void commit() throws HibernateException {  
  2. if (!begun) {  
  3. throw new TransactionException("Transaction not successfully started");  
  4. }  
  5.  
  6. log.debug("commit");  
  7.  
  8. if (!transactionContext.isFlushModeNever() && callback) {  
  9. transactionContext.managedFlush(); // if an exception occurs during  
  10. // flush, user must call  
  11. // rollback()  
  12. }  
  13.  
  14. notifyLocalSynchsBeforeTransactionCompletion();  
  15. if (callback) {  
  16. jdbcContext.beforeTransactionCompletion(this);  
  17. }  
  18.  
  19. try {  
  20. commitAndResetAutoCommit();
  21. //重點代碼,它的作用是提交事務(wù),并把connection的autocommit屬性恢復(fù)為true  
  22. log.debug("committed JDBC Connection");  
  23. committed = true;  
  24. if (callback) {  
  25. jdbcContext.afterTransactionCompletion(true, this);  
  26. }  
  27. notifyLocalSynchsAfterTransactionCompletion(Status.STATUS_COMMITTED);  
  28. } catch (SQLException e) {  
  29. log.error("JDBC commit failed", e);  
  30. commitFailed = true;  
  31. if (callback) {  
  32. jdbcContext.afterTransactionCompletion(false, this);  
  33. }  
  34. notifyLocalSynchsAfterTransactionCompletion(Status.STATUS_UNKNOWN);  
  35. throw new TransactionException("JDBC commit failed", e);  
  36. } finally {  
  37. closeIfRequired();  
  38. }  

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

  1. private void commitAndResetAutoCommit() throws SQLException {  
  2. try {  
  3. jdbcContext.connection().commit();  
  4. //這段不用說也能理解了  
  5. } finally {  
  6. toggleAutoCommit();  
  7. //這段的作用是恢復(fù)connection的autocommit屬性為true  
  8. }  

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

  1. private void toggleAutoCommit() {  
  2. try {  
  3. if (toggleAutoCommit) {  
  4. log.debug("re-enabling autocommit");  
  5. jdbcContext.connection().setAutoCommit(true);  
  6. //這行代碼的意義很明白了吧  
  7. }  
  8. } catch (Exception sqle) {  
  9. log.error("Could not toggle autocommit", sqle);  
  10. }  

因此,如果你是直接使用Hibernate,并手動管理它的session,并手動開啟事務(wù)關(guān)閉事務(wù)的話,完全可以保證你的事務(wù)(好像完全是廢話)。

【編輯推薦】

  1. Hibernate專業(yè)知識介紹
  2. 討論Hibernate和模型對象
  3. Hibernate查詢緩存全面分析
  4. 概括Hibernate主鍵生成機制
  5. Hibernate Pager基礎(chǔ)介紹
責任編輯:佚名 來源: blogjava
相關(guān)推薦

2009-09-28 13:43:28

使用Hibernate

2009-09-23 17:07:31

Hibernate C

2009-09-21 13:05:18

Hibernate u

2009-09-28 15:47:59

Hibernate O

2009-06-10 09:58:32

Oracle sequHibernate

2009-09-25 10:53:40

Hibernate S

2009-09-29 10:46:58

Hibernate領(lǐng)域

2009-09-22 10:09:21

Hibernate S

2009-06-05 09:52:25

struts分頁Hibernate

2009-09-27 10:02:29

定制Hibernate

2009-09-28 13:39:01

Hibernate工作

2009-09-29 16:16:58

Hibernate H

2009-07-23 13:30:46

JDBC事務(wù)

2009-09-21 17:17:11

Hibernate二級

2009-09-29 15:52:26

Hibernate X

2009-09-27 14:06:57

Hibernate o

2012-02-08 11:01:53

HibernateJava

2011-08-10 09:31:41

Hibernateunion

2009-02-11 09:37:32

Hibernate分頁技術(shù)JSP

2009-09-25 09:21:27

Hibernate元數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 毛片站 | 91精品一区二区三区久久久久 | 日本一道本 | 国产成人精品久久二区二区91 | 久久这里只有 | 欧美 日本 国产 | 久久av.com| 一区二区三区四区在线播放 | 香蕉av免费 | 伊人久久综合 | 精品成人在线观看 | 国产精彩视频 | 九九精品视频在线 | 国产小视频在线观看 | 国产激情三区 | 欧美日韩在线视频一区 | 亚洲福利一区二区 | 天天草视频 | 日日夜夜操天天干 | 日韩高清成人 | 九九热国产视频 | 日韩一级电影免费观看 | 黄免费观看视频 | 成人激情视频网 | 91精品久久久 | 欧美 中文字幕 | 国产日韩欧美一区二区在线播放 | 黄片毛片 | 黄色成人av | 成人av在线播放 | 国产免费看 | 久草热视频 | 在线视频 亚洲 | 国产精品欧美一区二区 | 久久高清免费视频 | 99久久婷婷国产综合精品电影 | 成人在线视频网 | 日韩精品在线看 | 91中文字幕在线观看 | 伊人狼人影院 | 日韩久久精品 |