zoukankan      html  css  js  c++  java
  • 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插入数据失败

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

      

  • 相关阅读:
    [Linux] crontab和shell每天定时备份数据库
    [Go] 实战项目在线客服GO-FLY -在gin框架使用IP识别库转换IP为城市
    [javascript] elementui和vue下复制粘贴上传图片
    [Go] GO-FLY客服项目被公众号 "转角遇到GitHub " 推荐
    [javascript] cdn模式下vue和vue-router实现路由
    [Go] Golang发送http GET请求
    [MySQL] 利用explain查看sql语句中使用的哪个索引
    [Go]GO语言实战-小程序或公众号接口gin框架验证微信服务器消息签名-开源WEB客服
    [Go]GO语言实战-开源WEB客服GO-FLY-gorm下分页的实现
    [前端] 设定为disabled的表单域值不能被提交
  • 原文地址:https://www.cnblogs.com/meilibao/p/3472808.html
Copyright © 2011-2022 走看看