日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
JDBC事務(wù)處理機(jī)制探秘

Java中的事務(wù)處理

10年的沁陽(yáng)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整沁陽(yáng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“沁陽(yáng)網(wǎng)站設(shè)計(jì)”,“沁陽(yáng)網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

一般情況下,J2EE應(yīng)用服務(wù)器支持JDBC事務(wù)、JTA(Java Transaction API)事務(wù)、容器管理事務(wù)。一般情況下,***不要在程序中同時(shí)使用上述三種事務(wù)類(lèi)型,比如在JTA事務(wù)中嵌套JDBC事務(wù)。第二方面,事務(wù)要在盡可能短的時(shí)間內(nèi)完成,不要在不同方法中實(shí)現(xiàn)事務(wù)的使用。下面我們列舉兩種JDBC事務(wù)處理方式。

1、JavaBean中使用JDBC事務(wù)處理

在JDBC中怎樣將多個(gè)SQL語(yǔ)句組合成一個(gè)事務(wù)呢?在JDBC中,打開(kāi)一個(gè)連接對(duì)象Connection時(shí),缺省是auto-commit模式,每個(gè)SQL語(yǔ)句都被當(dāng)作一個(gè)事務(wù),即每次執(zhí)行一個(gè)語(yǔ)句,都會(huì)自動(dòng)的得到事務(wù)確認(rèn)。為了能將多個(gè)SQL語(yǔ)句組合成一個(gè)事務(wù),要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不調(diào)用commit()方法,SQL語(yǔ)句不會(huì)得到JDBC事務(wù)處理確認(rèn)。在最近一次commit()方法調(diào)用之后的所有SQL會(huì)在方法commit()調(diào)用時(shí)得到確認(rèn)。

 
 
 
  1. public int delete(int sID) {   
  2.  dbc = new DataBaseConnection();   
  3.  Connection con = dbc.getConnection();   
  4.  try {   
  5.   con.setAutoCommit(false);// 更改JDBC事務(wù)的默認(rèn)提交方式   
  6.   dbc.executeUpdate("delete from bylaw where ID=" + sID);   
  7.   dbc.executeUpdate("delete from bylaw _content where ID=" + sID);   
  8.   dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);   
  9.   con.commit();//提交JDBC事務(wù)   
  10.   con.setAutoCommit(true);// 恢復(fù)JDBC事務(wù)的默認(rèn)提交方式   
  11.   dbc.close();   
  12.   return 1;   
  13.  }   
  14.  catch (Exception exc) {   
  15.   con.rollBack();//回滾JDBC事務(wù)   
  16.   exc.printStackTrace();   
  17.   dbc.close();   
  18.   return -1;   
  19.  }   
  20. }  

2、SessionBean中的JTA事務(wù)

JTA 是事務(wù)服務(wù)的 J2EE 解決方案。本質(zhì)上,它是描述事務(wù)接口(比如 UserTransaction 接口,開(kāi)發(fā)人員直接使用該接口或者通過(guò) J2EE 容器使用該接口來(lái)確保業(yè)務(wù)邏輯能夠可靠地運(yùn)行)的 J2EE 模型的一部分。JTA 具有的三個(gè)主要的接口分別是 UserTransaction 接口、TransactionManager 接口和 Transaction 接口。這些接口共享公共的事務(wù)操作,例如 commit() 和 rollback(), 但是也包含特殊的事務(wù)操作,例如 suspend(),resume() 和 enlist(),它們只出現(xiàn)在特定的接口上,以便在實(shí)現(xiàn)中允許一定程度的訪問(wèn)控制。例如,UserTransaction 能夠執(zhí)行事務(wù)劃分和基本的事務(wù)操作,而 TransactionManager 能夠執(zhí)行上下文管理。

應(yīng)用程序可以調(diào)用UserTransaction.begin()方法開(kāi)始一個(gè)事務(wù),該JDBC事務(wù)處理與應(yīng)用程序正在其中運(yùn)行的當(dāng)前線程相關(guān)聯(lián)。底層的事務(wù)管理器實(shí)際處理線程與事務(wù)之間的關(guān)聯(lián)。UserTransaction.commit()方法終止與當(dāng)前線程關(guān)聯(lián)的事務(wù)。UserTransaction.rollback()方法將放棄與當(dāng)前線程關(guān)聯(lián)的當(dāng)前事務(wù)。

 
 
 
  1. public int delete(int sID) {   
  2.  DataBaseConnection dbc = null;   
  3.  dbc = new DataBaseConnection();   
  4.  dbc.getConnection();   
  5.  UserTransaction transaction = sessionContext.getUserTransaction();//獲得JTA事務(wù)   
  6.  try {   
  7.   transaction.begin(); //開(kāi)始JTA事務(wù)   
  8.   dbc.executeUpdate("delete from bylaw where ID=" + sID);   
  9.   dbc.executeUpdate("delete from bylaw _content where ID=" + sID);   
  10.   dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);   
  11.   transaction.commit(); //提交JTA事務(wù)   
  12.   dbc.close();   
  13.   return 1;   
  14.  }   
  15.  catch (Exception exc) {   
  16.   try {   
  17.    transaction.rollback();//JTA事務(wù)回滾   
  18.   }   
  19.   catch (Exception ex) {   
  20.    //JTA事務(wù)回滾出錯(cuò)處理   
  21.    ex.printStackTrace();   
  22.   }   
  23.   exc.printStackTrace();   
  24.   dbc.close();   
  25.   return -1;   
  26.  }   
  27. }  

網(wǎng)頁(yè)名稱:JDBC事務(wù)處理機(jī)制探秘
文章出自:http://www.5511xx.com/article/coogohs.html