斷點(diǎn)

          每天進(jìn)步一點(diǎn)點(diǎn)!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          Spring的聲明式事務(wù)

          Posted on 2010-06-01 23:25 斷點(diǎn) 閱讀(341) 評(píng)論(0)  編輯  收藏 所屬分類: Spring

          1、聲明式事務(wù)配置
           * 配置SessionFactory
           * 配置事務(wù)管理器
           * 事務(wù)的傳播特性
           * 那些類那些方法使用事務(wù)

          2、編寫業(yè)務(wù)邏輯方法
           * 繼承HibernateDaoSupport類,使用HibernateTemplate來(lái)持久化,HibernateTemplate是
             Hibernate Session的輕量級(jí)封裝
           * 默認(rèn)情況下運(yùn)行期異常才會(huì)回滾(包括繼承了RuntimeException子類),普通異常是不會(huì)滾的
           * 編寫業(yè)務(wù)邏輯方法時(shí),最好將異常一直向上拋出,在表示層(struts)處理
           * 關(guān)于事務(wù)邊界的設(shè)置,通常設(shè)置到業(yè)務(wù)層,不要添加到Dao上 

          3、了解事務(wù)的幾種傳播特性
           1. PROPAGATION_REQUIRED: 如果存在一個(gè)事務(wù),則支持當(dāng)前事務(wù)。如果沒(méi)有事務(wù)則開(kāi)啟
           2. PROPAGATION_SUPPORTS: 如果存在一個(gè)事務(wù),支持當(dāng)前事務(wù)。如果沒(méi)有事務(wù),則非事務(wù)的執(zhí)行
           3. PROPAGATION_MANDATORY: 如果已經(jīng)存在一個(gè)事務(wù),支持當(dāng)前事務(wù)。如果沒(méi)有一個(gè)活動(dòng)的事務(wù),則拋出異常。
           4. PROPAGATION_REQUIRES_NEW: 總是開(kāi)啟一個(gè)新的事務(wù)。如果一個(gè)事務(wù)已經(jīng)存在,則將這個(gè)存在的事務(wù)掛起。
           5. PROPAGATION_NOT_SUPPORTED: 總是非事務(wù)地執(zhí)行,并掛起任何存在的事務(wù)。
           6. PROPAGATION_NEVER: 總是非事務(wù)地執(zhí)行,如果存在一個(gè)活動(dòng)事務(wù),則拋出異常
           7. PROPAGATION_NESTED:如果一個(gè)活動(dòng)的事務(wù)存在,則運(yùn)行在一個(gè)嵌套的事務(wù)中. 如果沒(méi)有活動(dòng)事務(wù),
                則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執(zhí)行

          4、Spring事務(wù)的隔離級(jí)別
           1. ISOLATION_DEFAULT: 這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別,使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別.
                另外四個(gè)與JDBC的隔離級(jí)別相對(duì)應(yīng)
           2. ISOLATION_READ_UNCOMMITTED: 這是事務(wù)最低的隔離級(jí)別,它充許令外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)。
                這種隔離級(jí)別會(huì)產(chǎn)生臟讀,不可重復(fù)讀和幻像讀。
           3. ISOLATION_READ_COMMITTED: 保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取。另外一個(gè)事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)
           4. ISOLATION_REPEATABLE_READ: 這種事務(wù)隔離級(jí)別可以防止臟讀,不可重復(fù)讀。但是可能出現(xiàn)幻像讀。
                它除了保證一個(gè)事務(wù)不能讀取另一個(gè)事務(wù)未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)。
           5. ISOLATION_SERIALIZABLE 這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別。事務(wù)被處理為順序執(zhí)行。
                除了防止臟讀,不可重復(fù)讀外,還避免了幻像讀。 


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 韶关市| 拜城县| 渝中区| 阿拉善右旗| 莱阳市| 临澧县| 辽中县| 通化县| 建水县| 罗平县| 宜城市| 宁蒗| 永靖县| 兰坪| 巫溪县| 新田县| 庆元县| 托克托县| 法库县| 五台县| 高唐县| 喀什市| 靖宇县| 永川市| 盐池县| 海盐县| 新野县| 南郑县| 砀山县| 安福县| 安顺市| 雷波县| 乌审旗| 南汇区| 获嘉县| 德化县| 海兴县| 涿鹿县| 清原| 阿瓦提县| 西宁市|