學(xué)習(xí)啦>知識(shí)大全>知識(shí)百科>百科知識(shí)>

java什么是事務(wù)意思概念

時(shí)間: 歐東艷656 分享

  事務(wù),一般是指要做的或所做的事情。在計(jì)算機(jī)術(shù)語(yǔ)中是指訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)(Transaction)是訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)通常由高級(jí)數(shù)據(jù)庫(kù)操縱語(yǔ)言或編程語(yǔ)言(如SQL,C++或Java)書(shū)寫(xiě)的用戶(hù)程序的執(zhí)行所引起,并用形如begin transaction和end transaction語(yǔ)句(或函數(shù)調(diào)用)來(lái)界定。事務(wù)由事務(wù)開(kāi)始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。

  Java中的事務(wù)處理

  一般情況下,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ù)的使用。下面我們列舉兩種事務(wù)處理方式。

  1、JavaBean中使用JDBC方式進(jìn)行事務(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ì)得到事務(wù)確認(rèn)。在最近一次commit()方法調(diào)用之后的所有SQL會(huì)在方法commit()調(diào)用時(shí)得到確認(rèn)。

public int delete(int sID) {
 dbc = new DataBaseConnection();
 Connection con = dbc.getConnection();
 try {
  con.setAutoCommit(false);// 更改JDBC事務(wù)的默認(rèn)提交方式
  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事務(wù)
  con.setAutoCommit(true);// 恢復(fù)JDBC事務(wù)的默認(rèn)提交方式
  dbc.close();
  return 1;
 }
 catch (Exception exc) {
  con.rollBack();//回滾JDBC事務(wù)
  exc.printStackTrace();
  dbc.close();
  return -1;
 }
}

  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ù),該事務(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ù)。

public int delete(int sID) {
 DataBaseConnection dbc = null;
 dbc = new DataBaseConnection();
 dbc.getConnection();
 UserTransaction transaction = sessionContext.getUserTransaction();//獲得JTA事務(wù)
 try {
  transaction.begin(); //開(kāi)始JTA事務(wù)
  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事務(wù)
  dbc.close();
  return 1;
 }
 catch (Exception exc) {
  try {
   transaction.rollback();//JTA事務(wù)回滾
  }
  catch (Exception ex) {
   //JTA事務(wù)回滾出錯(cuò)處理
   ex.printStackTrace();
  }
  exc.printStackTrace();
  dbc.close();
  return -1;
 }
}

java什么是事務(wù)意思概念

事務(wù),一般是指要做的或所做的事情。在計(jì)算機(jī)術(shù)語(yǔ)中是指訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)(Transaction)是訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)通常由高級(jí)數(shù)據(jù)庫(kù)操縱語(yǔ)言或編
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • java什么是實(shí)例意思指的是
    java什么是實(shí)例意思指的是

    1. 首先看下定義的注解類(lèi): 類(lèi)注解定義, MyClassAnnotation.java: [java] view plain copy package com.ross.annotation; import java.lang.annotation.*; /** * Author: Jiangtao He; Email: ross.jia

  • java什么是繼承意思概念
    java什么是繼承意思概念

    我們經(jīng)常在項(xiàng)目中使用繼承,但是往往不太明白,程序運(yùn)行的順序以及原理,尤其是使用上轉(zhuǎn)型對(duì)象的時(shí)候,以及父類(lèi)子類(lèi)中都有static變量和方法時(shí),不知

  • java什么是反射意思概念介紹
    java什么是反射意思概念介紹

    Java中的反射,我們常見(jiàn)是取得構(gòu)造方法,成員變量,普通方法,還有對(duì)數(shù)組反射的操作。 1、反射的精辟定義:反射就是把Java類(lèi)中的各種成分映射成相應(yīng)的

  • it領(lǐng)域什么是si
    it領(lǐng)域什么是si

    信息產(chǎn)業(yè)其實(shí)是一個(gè)很大的產(chǎn)業(yè)集群。信息的感測(cè)技術(shù)、信息的識(shí)別技術(shù)、網(wǎng)絡(luò)技術(shù)、信息處理技術(shù)和信息的施用技術(shù)等形成了不同的產(chǎn)業(yè)。就計(jì)算機(jī)技術(shù)

245691