天天看點

業務層與事務控制

業務層應該不應該出現事務控制代碼 這個問題已經在業界達成共識:業務層絕對不應該出現事務控制代碼,嚴格的說不應該出現與業務無關的代碼。

在aop沒有出現以前是怎樣控制的呢?

似乎沒有很好的方法

但是随着spring的出現aop的風靡 這個問題得到了比較優雅的解決

<o:p> </o:p>

例如

<o:p> </o:p>

有業務方法

bizMethod(){

       //business code

       dao.insert();

<o:p> </o:p>

       //business code

       dao.update();

}

<o:p> </o:p>

要對這個方法加上事務控制

在aop出現之前 我們怎麼解決呢?隻能這樣

bizMethod(){

       tx.begin();

<o:p> </o:p>

       //business code

       dao.insert();

<o:p> </o:p>

       //business code

       dao.update();

<o:p> </o:p>

       tx.comit();

}

<o:p> </o:p>

這樣事務代碼就混合到業務邏輯中 跟dao層産生緊耦合 不利于業務代碼的複用

<o:p> </o:p>

而采用aop來控制就可以采用配置檔案的方式 将事物控制代碼提取到業務代碼之外

提高了業務代碼的複用度 使業務層與dao層産生松耦合

繼續閱讀