Spring.net--很棒的事务处理

1--Case

比如t_Order订单表1,t_OrderDetail订单明细表2

下一张订单会往表1插入一条数据,表2会插入多行数据

使用Spring.net事务管理

例如

---Order---订单主信息-------

public class OrderBIL

{

      private void InsertOrderHeader(Order order)

  {

          OrderDAL.InsertOrderHeader(Order order);

  }

}

public class OrderDAL

{

      private void InsertOrderHeader(Order order)

  {

           string insertSQL="insert into Order(orderNo,CreateTime,Creator,CreatName,SupplierCode,SupplierName,ClientCode,ClientName)"

    .........................as so on

  }

}

--订单明细表----OrderDetail-----

public class OrderDetailBIL

{

      private void InsertOrderDetail(Order order)

  {

           OrderDetailDAL.InsertOrderDetail(Order order);

  }

}

public class OrderDetailDAL

{

      private void InsertOrderDetail(Order order)

  {

           string insertSQL="insert into Order(orderNo,CreateTime,Creator,CreatName,SupplierCode,SupplierName,ClientCode,ClientName)"

    .........................as so on

  }

}

public InterFace IOrderService

{

    void CreateOrder(Order OrderHeader,OrderDetail orderDetail);

}

--Service 实现类

public class OrderManageSerivceIMPL:IOrderService

{

      private void CreateOrder(Order OrderHeader,OrderDetail orderDetail)

  {

            OrderBIL.InsertOrderHeader(OrderHeader);

            OrderDetailBIL.InsertOrderDetail(orderDetail);

  }

}

public class OrderManageSerivceTransaction

{

      public OrderManageSerivce OrderManageSerivce{

      private void CreateOrder(Order OrderHeader,OrderDetail orderDetail)

  {

            OrderManageSerivce.CreateOrder(OrderHeader,orderDetail);

  }

}

事务调用----

IOrderService orderService=(IOrderService)BeanFactory.getObject("OrderManageSerivceTransaction");

orderService.CreateOrder(OrderHeader,orderDetail);

---这个是Spring.net事务封装整个过程

如果插入表1成功,表2不成功整个事务回滚--呵呵

 

如果在某一个类中使用了异常处理

比如:

public class OrderDetailBIL

{

      private void InsertOrderDetail(Order order)

  {

         try{

           OrderDetailDAL.InsertOrderDetail(Order order);  

    }

          catch(exception ex)

          {

               case 1: throw new Exception(ex.Message);

               case 2: Log.WriteInfo(ex.Message);

          }

  }

}

 

case 1: Spring事务运行到这的时候,将回滚

case 2: Spring事务不回滚--将回出现这样情况---表1插入数据成功,表2插入数据失败

 

-----------好的东东下回分解--------------------------------------------------------

 

 

  

你可能感兴趣的:(spring)