91嫩草国产线免费观看_欧美日韩中文字幕在线观看_精品精品国产高清a毛片_六月婷婷网 - 一级一级特黄女人精品毛片

java 如何建立事務 都有哪些方法

首頁 > 公司事務2021-05-30 21:19:02

java 事務

有關數據庫方面的
Java中的事務處理

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

1、JavaBean中使用JDBC方式進行事務處理
在JDBC中怎樣將多個SQL語句組合成一個事務呢?在JDBC中,打開一個連接對象Connection時,缺省是auto-commit模式,每個SQL語句都被當作一個事務,即每次執行一個語句,都會自動的得到事務確認。為了能將多個SQL語句組合成一個事務,要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不調用commit()方法,SQL語句不會得到事務確認。在最近一次commit()方法調用之后的所有SQL會在方法commit()調用時得到確認。

public int delete(int sID) {
dbc = new DataBaseConnection();
Connection con = dbc.getConnection();
try {
con.setAutoCommit(false);// 更改JDBC事務的默認提交方式
dbc.executeUpdate("delete from bylaw where ID=" + sID);
dbc.executeUpdate("delete from bylaw _content where ID=" + sID);
dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);
con.commit();//提交JDBC事務
con.setAutoCommit(true);// 恢復JDBC事務的默認提交方式
dbc.close();
return 1;
}
catch (Exception exc) {
con.rollBack();//回滾JDBC事務
exc.printStackTrace();
dbc.close();
return -1;
}
}

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

應用程序可以調用UserTransaction.begin()方法開始一個事務,該事務與應用程序正在其中運行的當前線程相關聯。底層的事務管理器實際處理線程與事務之間的關聯。UserTransaction.commit()方法終止與當前線程關聯的事務。UserTransaction.rollback()方法將放棄與當前線程關聯的當前事務。

public int delete(int sID) {
DataBaseConnection dbc = null;
dbc = new DataBaseConnection();
dbc.getConnection();
UserTransaction transaction = sessionContext.getUserTransaction();//獲得JTA事務
try {
transaction.begin(); //開始JTA事務
dbc.executeUpdate("delete from bylaw where ID=" + sID);
dbc.executeUpdate("delete from bylaw _content where ID=" + sID);
dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);
transaction.commit(); //提交JTA事務
dbc.close();
return 1;
}
catch (Exception exc) {
try {
transaction.rollback();//JTA事務回滾
}
catch (Exception ex) {
//JTA事務回滾出錯處理
ex.printStackTrace();
}
exc.printStackTrace();
dbc.close();
return -1;
}
}
http://wenku.baidu.com/view/bbeda5ea998fcc22bcd10dca.html

很詳細

java web項目中 大家是怎么做的事務控制呢?

1.用Connection 做 提交或回滾rn2.spring 的 手動式編程控制事務rn3.spring 的聲明式事務rn但是第三種 例如我一個業務中要調用 update 和 insert方法 ,就是 轉賬給別人錢,如果第一步(update )操作成功,第二步(insert) 操作失敗,這個問題 spring 的聲明式事務能同時讓這兩個方法回滾嗎?rn請求大俠給指導!??!
可以,spring的事物控制不是在service下么 你把2個業務dao放到同一個service下 去執行就可以了
采用spring的聲明式事務方式,如果update和insert操作處于同一個事務中,一旦有一個操作發生異常,spring會自動將數據回滾為執行update和insert操作前的狀態。
默認情況下spring僅在發生運行時異常(RuntimeException)的情況下,才進行回滾,不過這是可以修改的。
希望對你有幫助。
spring 那種是可以的,一般指定用 @Transaction 指定一個service方法的事務,在service方法里面,只有出現異常(這個異常是可以指定的。),導致這個方法沒有正常結束,這個就會數據庫回滾。你只有把 Update 和insert寫在一個方法里,然后把這個方法加上事務控制,那就可以了。這里面的實現邏輯大概是這樣,首先spring獲取連接, 我們在service方法里進行數據庫的操作,然后方法結束, 如果正常結束,spring提交事務,釋放連接。如果異常結束 ,spring 進行回滾,(這個回滾會把這個service方法內所有的修改操作回滾。)釋放連接。 大體的流程是這樣。至于這些邏輯在數據庫層面是如何實現的,我也不知道。
用過spring沒,用Spring的AOP技術能很好的將事物隔離出來。
Spring聲明式事務讓我們從復雜的事務處理中得到解脫。
使得我們再也無需要去處理獲得連接、關閉連接、事務提交和回滾等這些操作。再也無需要我們在與事務相關的方法中處理大量的try…catch…finally代碼。
你把update和insert方法放到同一個事務中,不就行了嗎?

java事務處理

麻煩請詳細描述java中的事務處理,如果有多種請列出。
如果對數據庫進行多次操作,每一次的執行或步驟都是一個事務.如果數據庫操作在某一步沒有執行或出現異常而導致事務失敗,這樣有的事務被執行有的就沒有被執行,從而就有了事務的回滾,取消先前的操作.....
JavaBean中使用JDBC方式進行事務處理

public int delete(int sID) {
  dbc = new DataBaseConnection();
  Connection con = dbc.getConnection();
  try {
   con.setAutoCommit(false);// 更改JDBC事務的默認提交方式
   dbc.executeUpdate("delete from xiao where ID=" + sID);
   dbc.executeUpdate("delete from xiao_content where ID=" + sID);
   dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);
   con.commit();//提交JDBC事務
   con.setAutoCommit(true);// 恢復JDBC事務的默認提交方式
   dbc.close();
   return 1;
  }
  catch (Exception exc) {
   con.rollBack();//回滾JDBC事務
   exc.printStackTrace();
   dbc.close();
   return -1;
  }
}

在數據庫操作中,一項事務是指由一條或多條對數據庫更新的sql語句所組成的一個不可分割的工作單元。只有當事務中的所有操作都正常完成了,整個事務才能被提交到數據庫,如果有一項操作沒有完成,就必須撤消整個事務。

例如在銀行的轉帳事務中,假定張三從自己的帳號上把1000元轉到李四的帳號上,相關的sql語句如下:

update account set monery=monery-1000 where name='zhangsan'

update account set monery=monery+1000 where name='lisi'

這個兩條語句必須作為一個完成的事務來處理。只有當兩條都成功執行了,才能提交這個事務。如果有一句失敗,整個事務必須撤消。

在connection類中提供了3個控制事務的方法:

(1) setAutoCommit(Boolean autoCommit):設置是否自動提交事務;

(2) commit();提交事務;

(3) rollback();撤消事務;

在jdbc api中,默認的情況為自動提交事務,也就是說,每一條對數據庫的更新的sql語句代表一項事務,操作成功后,系統自動調用commit()來提交,否則將調用rollback()來撤消事務。

在jdbc api中,可以通過調用setAutoCommit(false) 來禁止自動提交事務。然后就可以把多條更新數據庫的sql語句做為一個事務,在所有操作完成之后,調用commit()來進行整體提交。倘若其中一項sql操作失敗,就不會執行commit()方法,而是產生相應的sqlexception,此時就可以捕獲異常代碼塊中調用rollback()方法撤消事務。
學習Java 建議你一定要學學ssh框架 即:struts+spring+hibernate在j2ee開發中 它是很重要的開源框架使用ssh后 通過spring來管理應用程序中的事務會顯得格外簡單
等你有了答案告訴我啊

JAVA 里面如何使用 類似事務的方法

//將數據存入Hist表rnmOper.InsertLocaStkMoveHist("A", "B");rnmOper.InsertLocaStockHist("A", "B");rn//將數據刪除rnmOper.DeleteLocalStkMove("A", "B");rnmOper.DeleteLocalStock("A", "B");rn這4個方法都返回Boolean值,怎么讓如果有一條出錯,都回滾
如果是用jdbc 上面beginTransaction 所有操作執行完后 commit 用 try catch 包起來 catch到異常 rollback spring 用注解就可以
java 一般常用的有3種事務 都跟數據關聯的時候才用的事務1.JDBC事務、JTA(Java Transaction API)事務、容器管理事務
Class.forName("com.mysql.jdbc.Driver");
con = JDBC.getConnection();

//設置非自動提交
con.setAutoCommit(false);

//將數據存入Hist表
mOper.InsertLocaStkMoveHist("A", "B");
mOper.InsertLocaStockHist("A", "B");
//將數據刪除
mOper.DeleteLocalStkMove("A", "B");
mOper.DeleteLocalStock("A", "B");

con.commit();//提交

相關推薦:

破產取回權的行使問題(取回權的行使)

企業合作合同范本(企業意向合作協議范本必備5篇)

年終獎要交稅嗎(公司給的獎金要交稅嗎)

挪用個體公司資金(挪用個體戶資金犯罪嗎)

騙取出口退稅罪構成(進出口騙稅1000萬怎么處罰)