业务层应该不应该出现事务控制代码 这个问题已经在业界达成共识:业务层绝对不应该出现事务控制代码,严格的说不应该出现与业务无关的代码。
在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层产生松耦合