<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    事務

    一:事務的概念
        事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability)的縮寫 

        事務的原子性:表示事務執行過程中的任何失敗都將導致事務所做的任何修改失效。
        一致性表示當事務執行失敗時,所有被該事務影響的數據都應該恢復到事務執行前的狀態。
         隔離性表示在事務執行過程中對數據的修改,在事務提交之前對其他事務不可見。
         持久性表示已提交的數據在事務執行失敗時,數據的狀態都應該正確。 
     

    二:事務的場景
        1.與銀行相關的業務,重要的數據,與錢相關的內容不能出任何錯。
        2.系統內部認為重要的數據,都需要事務的支持,防止重要數據的不一致。
        3.具體的業務場景:銀行業務,支付業務,交易業務等。

    三:事務的實現方式
        首先說一下事務的類型,主要包含一下三種:JDBC事務,JTA事務,容器事務
        1、JDBC事務 
    JDBC 事務是用 Connection 對象控制的。JDBC Connection 接口( java.sql.Connection )提供了兩種事務模式:自動提交和手工提交。 java.sql.Connection 提供了以下控制事務的方法: 

    public void setAutoCommit(boolean) 
    public boolean getAutoCommit() 
    public void commit() 
    public void rollback() 

    使用 JDBC 事務界定時,您可以將多個 SQL 語句結合到一個事務中。JDBC 事務的一個缺點是事務的范圍局限于一個數據庫連接。一個 JDBC 事務不能跨越多個數據庫。 

    2、JTA(Java Transaction API)事務 

    JTA是一種高層的,與實現無關的,與協議無關的API,應用程序和應用服務器可以使用JTA來訪問事務。 

    JTA允許應用程序執行分布式事務處理--在兩個或多個網絡計算機資源上訪問并且更新數據,這些數據可以分布在多個數據庫上。JDBC驅動程序的JTA支持極大地增強了數據訪問能力。 

    如果計劃用 JTA 界定事務,那么就需要有一個實現 javax.sql.XADataSource 、 javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC 驅動程序。一個實現了這些接口的驅動程序將可以參與 JTA 事務。一個 XADataSource 對象就是一個 XAConnection 對象的工廠。 XAConnection s 是參與 JTA 事務的 JDBC 連接。 

    您將需要用應用服務器的管理工具設置 XADataSource 。從應用服務器和 JDBC 驅動程序的文檔中可以了解到相關的指導。 

    J2EE 應用程序用 JNDI 查詢數據源。一旦應用程序找到了數據源對象,它就調用 javax.sql.DataSource.getConnection() 以獲得到數據庫的連接。 

    XA 連接與非 XA 連接不同。一定要記住 XA 連接參與了 JTA 事務。這意味著 XA 連接不支持 JDBC 的自動提交功能。同時,應用程序一定不要對 XA 連接調用 java.sql.Connection.commit() 或者 java.sql.Connection.rollback() 。相反,應用程序應該使用 UserTransaction.begin()、 UserTransaction.commit() 和 serTransaction.rollback() 。 


    3、容器事務 

    容器事務主要是J2EE應用服務器提供的,容器事務大多是基于JTA完成,這是一個基于JNDI的,相當復雜的API實現。相對編碼實現JTA事務管理,我們可以通過EJB容器提供的容器事務管理機制(CMT)完成同一個功能,這項功能由J2EE應用服務器提供。這使得我們可以簡單的指定將哪個方法加入事務,一旦指定,容器將負責事務管理任務。這是我們土建的解決方式,因為通過這種方式我們可以將事務代碼排除在邏輯編碼之外,同時將所有困難交給J2EE容器去解決。使用EJB CMT的另外一個好處就是程序員無需關心JTA API的編碼,不過,理論上我們必須使用EJB。 

    四、三種事務差異 

    1、JDBC事務控制的局限性在一個數據庫連接內,但是其使用簡單。 

    2、JTA事務的功能強大,事務可以跨越多個數據庫或多個DAO,使用也比較復雜。 

    3、容器事務,主要指的是J2EE應用服務器提供的事務管理,局限于EJB應用使用。 


    五:詳解事務
    1.首先看一下目前使用最多的spring事務,目前spring配置分為聲明式事務和編程式事務。
      1)編程式事務
            主要是實現接口PlatformTransactionManager
            
         
            實現了事務管理的接口有非常多,這里主要講DataSourceTransactionManager和數據庫jdbc相關的事務處理方式

    posted on 2012-06-11 15:46 陳睿 閱讀(209) 評論(0)  編輯  收藏 所屬分類: 高級

    導航

    <2012年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 16女性下面扒开无遮挡免费| 最近2019中文免费字幕在线观看| 久久久久久精品免费免费自慰| 亚洲男同帅GAY片在线观看| 精品在线免费视频| 国产又大又长又粗又硬的免费视频 | 亚洲午夜久久久影院伊人| 一级黄色免费毛片| 精品亚洲视频在线观看| 成年大片免费高清在线看黄| 国产国拍亚洲精品福利 | 视频免费在线观看| 亚洲人成依人成综合网| xx视频在线永久免费观看| 亚洲综合久久成人69| 日韩不卡免费视频| 亚洲色偷偷色噜噜狠狠99网| 全免费一级午夜毛片| 国产成人亚洲午夜电影| 亚洲午夜爱爱香蕉片| a级毛片在线免费| 亚洲美女视频一区二区三区| 噼里啪啦免费观看高清动漫4| 亚洲伊人久久精品| 永久黄网站色视频免费| 特色特黄a毛片高清免费观看| 亚洲精品无码鲁网中文电影| 久久午夜夜伦鲁鲁片免费无码| 亚洲综合一区二区| 日本不卡免费新一二三区| 一级毛片完整版免费播放一区| 亚洲精品乱码久久久久久中文字幕| 久久免费看少妇高潮V片特黄| 亚洲一级片在线观看| 免费一级肉体全黄毛片| baoyu777永久免费视频| 亚洲资源最新版在线观看| 亚洲国产精品无码久久久久久曰 | 亚洲国产精品久久久久秋霞小| 四虎影视免费在线| 一级片在线免费看|