業務層應該不應該出現事務控制代碼 這個問題已經在業界達成共識:業務層絕對不應該出現事務控制代碼,嚴格的說不應該出現與業務無關的代碼。
在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層産生松耦合