久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Spring中Transactional配置

 閃寧斯達(dá) 2012-03-09

Spring中Transactional配置

分類(lèi): spring 3 學(xué)習(xí) 225人閱讀 評(píng)論(0) 收藏 舉報(bào)

Spring中Transactional配置

Spring中Transactional配置
(2011-05-12 18:56:32)
轉(zhuǎn)載
標(biāo)簽:
雜談
分類(lèi): spring
@Transactional(noRollbackFor=RuntimeException.class)方法事務(wù)說(shuō)明
@Transactional(RollbackFor=Exception.class)
@Transactional(readOnly=true)
@Transactional(timeout=100)
@Transactional(isolation)數(shù)據(jù)庫(kù)的隔離級(jí)別
{
   Read Uncommited:讀取未提交的數(shù)據(jù)(會(huì)出現(xiàn)臟讀不可重復(fù)讀 幻讀)
   Read Commited:讀已提交的數(shù)據(jù)(會(huì)出現(xiàn)不可重復(fù)讀和幻讀)
   Repeatable Read:可重復(fù)讀(會(huì)出現(xiàn)幻讀)
   Serializable:串行化
}

臟讀:一個(gè)事務(wù)讀取到另外一個(gè)事務(wù)未提交的更新的數(shù)據(jù)
不可重復(fù)讀:在同一事務(wù)中,多次讀取同一個(gè)數(shù)據(jù)返回結(jié)果有所不同,,就是后續(xù)的讀取可以讀到另外一個(gè)事務(wù)的已經(jīng)的已經(jīng)提交的更新數(shù)據(jù)
可重復(fù)讀:在同一個(gè)事務(wù)多次讀取數(shù)據(jù)時(shí),,能夠保證所讀取的數(shù)據(jù)一樣,也就是后讀取的不能讀到另外一個(gè)事務(wù)已經(jīng)提交的數(shù)據(jù)
幻讀:一個(gè)事務(wù)讀取到另外一個(gè)事務(wù)已經(jīng)提交的更新的數(shù)據(jù)

針對(duì)查詢(xún)方法
@Transactional(propagation=Propagation.NOT_SUPPORTED)針對(duì)某個(gè)方法不開(kāi)啟事務(wù)
@Transactional(propagation=Propagation.REQUIRED)默認(rèn)的事務(wù)支持

例子:
public class Bean1 {
  @Transactional(propagation=Propagation.Required)
  public void update() {
     executeUpdate(SQL);
  }
}
public class Bean2 {
  @Transactional(propagation=Propagation.SUPPORTS)
  public void update() {
     executeUpdate(SQL);
  }
}

public class Transaction {
  @Transactional(propagation=Propagation.REQUIRES_NEW)
  public void test1()
  {
     bean1.update();
     bean2.update();
  }
   @Transactional(propagation=Propagation.NOT_SUPPORTED)
  public void test2()
  {
     bean1.update();
     bean2.update();
   }
   @Transactional(propagation=Propagation.SUPPORTS)
   public void test3()
   {
      bean1.update();
      bean2.update();
    }
}

//事務(wù)傳播屬性
@Transactional(propagation=Propagation.REQUIRED)//如果有事務(wù),,那么加入事務(wù),,沒(méi)有的話(huà)新創(chuàng)建一個(gè)
@Transactional(propagation=Propagation.NOT_SUPPORTED)//這個(gè)方法不開(kāi)啟事務(wù)
@Transactional(propagation=Propagation.REQUIREDS_NEW)//不管是否存在事務(wù),都創(chuàng)建一個(gè)新的事務(wù),,原來(lái)的掛起,,新的執(zhí)行完畢,繼續(xù)執(zhí)行老的事務(wù)
@Transactional(propagation=Propagation.MANDATORY)//必須在一個(gè)已有的事務(wù)中執(zhí)行,,否則拋出異常
@Transactional(propagation=Propagation.NEVER)//不能在一個(gè)事務(wù)中執(zhí)行,,就是當(dāng)前必須沒(méi)有事務(wù),否則拋出異常
@Transactional(propagation=Propagation.SUPPORTS)//其他bean調(diào)用這個(gè)方法,如果在其他bean中聲明了事務(wù),,就是用事務(wù),。沒(méi)有聲明,就不用事務(wù),。
@Transactional(propagation=Propagation.NESTED)//如果一個(gè)活動(dòng)的事務(wù)存在,,則運(yùn)行在一個(gè)嵌套的事務(wù)中,如果沒(méi)有活動(dòng)的事務(wù),,則按照REQUIRED屬性執(zhí)行,,它使用一個(gè)單獨(dú)的事務(wù)。這個(gè)書(shū)屋擁有多個(gè)回滾的保存點(diǎn),,內(nèi)部事務(wù)的回滾不會(huì)對(duì)外部事務(wù)造成影響,,它只對(duì)DataSource TransactionManager事務(wù)管理器起效。
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)//只讀,,不能更新,,刪除
@Transactional(propagation=Propagation.REQUIRED,timeout=30)//超時(shí)30秒
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)//數(shù)據(jù)庫(kù)隔離級(jí)別



參考資料有:
http://www.cnblogs.com/xupei/archive/2011/01/07/1929632.html
http://hi.baidu.com/qmzwhl/blog/item/aae2d6581afd17d29d8204ca.html

spring 事務(wù)注解

默認(rèn)遇到throw new RuntimeException("...");會(huì)回滾
需要捕獲的throw new Exception("...");不會(huì)回滾

// 指定回滾
@Transactional(rollbackFor=Exception.class)
    public void methodName() {
       // 不會(huì)回滾
       throw new Exception("...");
    }
//指定不回滾
@Transactional(noRollbackFor=Exception.class)
    public ItimDaoImpl getItemDaoImpl() {
        // 會(huì)回滾
        throw new RuntimeException("注釋");
    }

    // 如果有事務(wù),那么加入事務(wù),沒(méi)有的話(huà)新建一個(gè)(不寫(xiě)的情況下)
    @Transactional(propagation=Propagation.REQUIRED)
    // 容器不為這個(gè)方法開(kāi)啟事務(wù)
    @Transactional(propagation=Propagation.NOT_SUPPORTED)
    // 不管是否存在事務(wù),都創(chuàng)建一個(gè)新的事務(wù),原來(lái)的掛起,新的執(zhí)行完畢,繼續(xù)執(zhí)行老的事務(wù)
    @Transactional(propagation=Propagation.REQUIRES_NEW)
    // 必須在一個(gè)已有的事務(wù)中執(zhí)行,否則拋出異常
    @Transactional(propagation=Propagation.MANDATORY)
    // 必須在一個(gè)沒(méi)有的事務(wù)中執(zhí)行,否則拋出異常(與Propagation.MANDATORY相反)
    @Transactional(propagation=Propagation.NEVER)
    // 如果其他bean調(diào)用這個(gè)方法,在其他bean中聲明事務(wù),那就用事務(wù).如果其他bean沒(méi)有聲明事務(wù),那就不用事務(wù).
    @Transactional(propagation=Propagation.SUPPORTS)
   
    /*
    public void methodName(){
       // 本類(lèi)的修改方法 1
       update();
       // 調(diào)用其他類(lèi)的修改方法
       otherBean.update();
       // 本類(lèi)的修改方法 2
       update();
    }
    other失敗了不會(huì)影響 本類(lèi)的修改提交成功
    本類(lèi)update的失敗,other也失敗
    */
@Transactional(propagation=Propagation.NESTED)
// readOnly=true只讀,不能更新,刪除
@Transactional (propagation = Propagation.REQUIRED,readOnly=true)
// 設(shè)置超時(shí)時(shí)間
@Transactional (propagation = Propagation.REQUIRED,timeout=30)
// 設(shè)置數(shù)據(jù)庫(kù)隔離級(jí)別
@Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多