天天看点

业务层与事务控制

业务层应该不应该出现事务控制代码 这个问题已经在业界达成共识:业务层绝对不应该出现事务控制代码,严格的说不应该出现与业务无关的代码。

在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层产生松耦合