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

淺談如何直接使用Hibernate

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

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

在直接使用Hibernate時,要在事務結束的時候,寫上一句: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. //重點代碼,它的作用是提交事務,并把connection的autocommit屬性恢復為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. //這段的作用是恢復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,并手動開啟事務關閉事務的話,完全可以保證你的事務(好像完全是廢話)。

【編輯推薦】

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

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領域

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事務

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

2009-02-11 09:37:32

Hibernate分頁技術JSP

2009-09-25 09:21:27

Hibernate元數

2009-09-23 14:40:17

Hibernate F
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠色综合欧美激情 | 国产一区二区黑人欧美xxxx | 在线伊人网| 日韩免费看视频 | 九久久 | 欧美日韩国产一区二区三区 | 欧美视频一区二区三区 | 欧美日韩国产一区二区 | 日韩在线小视频 | 亚洲精品电影在线观看 | 日本中文字幕一区 | 91久久精品一区二区二区 | 亚洲一区二区三区 | 青青久草 | 91av视频在线观看 | 91aiai| 国产福利在线播放 | 久久久久国产精品一区 | 欧美精品影院 | 免费观看的黄色网址 | 男女网站在线观看 | 亚洲精品电影网在线观看 | 高清黄色毛片 | 韩国久久精品 | 毛片链接 | 亚洲免费大片 | 久久精品久久精品 | 日韩精品免费在线 | 91国产在线播放 | 日韩高清国产一区在线 | 亚洲精品国产区 | 日本aⅴ中文字幕 | 高清欧美性猛交 | 国产欧美久久精品 | 另类 综合 日韩 欧美 亚洲 | 在线免费亚洲视频 | 久久综合久 | 久久国产精品一区二区三区 | 99久久日韩精品免费热麻豆美女 | av在线电影网站 | 99免费精品视频 |