zoukankan      html  css  js  c++  java
  • Spring.Net学习笔记(7)-事务

    一、开发环境

    操作系统:Win7

    编译器:VS2010

    二、涉及程序集

    Spring.Core.dll

    Spring.Data.dll

    Common.Logging.dll

    三、开发过程

    1.项目结构

    image

    2.IAccountDao.cs

    namespace Dao
    {
        public interface IAccountDao
        {
            void Create(string name, string userName);
    
            void Delete(string userName);
        }
    }

    3.IUserDao.cs

    namespace Dao
    {
        public interface IUserDao
        {
            void Create(string name, int age);
    
            void Delete(string name);
    
            DataSet Get(string name);
        }
    }

    4.AccountDao.cs

    namespace Dao
    {
        public class AccountDao : AdoDaoSupport, IAccountDao
        {
            public void Create(string name, string userName)
            {
                AdoTemplate.ExecuteNonQuery(CommandType.Text,
                    String.Format("INSERT INTO T_Account (UserName,    AccountName) VALUES ('{0}', '{1}')", userName, name));
            }
    
            public void Delete(string userName)
            {
                AdoTemplate.ExecuteNonQuery(CommandType.Text,
                    String.Format("DELETE FROM T_Account WHERE UserName = '{0}'", userName));
            }
        }
    }

    5.UserDao.cs

    namespace Dao
    {
        public class UserDao : AdoDaoSupport, IUserDao
        {
            public void Create(string name, int age)
            {
                AdoTemplate.ExecuteNonQuery(CommandType.Text,
                    string.Format("INSERT INTO T_User (UserName,    UserAge) VALUES ('{0}', {1})", name, age));
            }
    
            public void Delete(string name)
            {
                AdoTemplate.ExecuteNonQuery(CommandType.Text,
                    string.Format("DELETE FROM T_User WHERE UserName = '{0}'", name));
            }
    
            public DataSet Get(string name)
            {
                return AdoTemplate.DataSetCreate(CommandType.Text,
                    string.Format("SELECT * FROM T_User WHERE UserName = '{0}'", name));
            }
        }
    }

    6.IUserService.cs

    namespace Service
    {
        public interface IUserService
        {
            void SaveData(string name, int age, string accountName);
    
            void DeleteData(string name);
    
            DataSet Get(string name);
        }
    }

    7.UserService.cs

    namespace Service
    {
        public class UserService : IUserService
        {
            public IUserDao UserDao { get; set; }
    
            public IAccountDao AccountDao { get; set; }
    
            [Transaction]
            public void SaveData(string name, int age, string accountName)
            {
                UserDao.Create(name, age);
                AccountDao.Create(accountName, name);
            }
    
    
            [Transaction]
            public void DeleteData(string name)
            {
                UserDao.Delete(name);
                throw new Exception("测试数据是否回滚");
                AccountDao.Delete(name);
            }
    
            [Transaction(ReadOnly = true)]
            public DataSet Get(string name)
            {
                return UserDao.Get(name);
            }
        }
    }

    8.App.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    
      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
          <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
          <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
        </sectionGroup>
      </configSections>
    
      <spring>
        <parsers>
          <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
          <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
        </parsers>
        
        <context>
          <!--<resource uri="assembly://Dao/Dao/Dao.xml"/>-->
          <resource uri="config://spring/objects"></resource>
        </context>
        
        <objects xmlns="http://www.springframework.net"
                 xmlns:db="http://www.springframework.net/database"
                 xmlns:tx="http://www.springframework.net/tx">
    
          <db:provider id="DbProvider"
                        provider="SqlServer-1.1"
                        connectionString="Server=(local);Database=CIS;Uid=sa;Pwd=woaini;Trusted_Connection=False"/>
    
          <object id="userDao" type="Dao.UserDao, Dao">
            <property name="AdoTemplate" ref="adoTemplate"/>
          </object>
    
          <object id="accountDao" type="Dao.AccountDao, Dao">
            <property name="AdoTemplate" ref="adoTemplate"/>
          </object>
    
          <object id="userService" type="Service.UserService, Service">
            <property name="UserDao" ref="userDao"/>
            <property name="AccountDao" ref="accountDao"/>
          </object>
    
          <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data">
            <property name="DbProvider" ref="DbProvider"/>
            <property name="DataReaderWrapperType" value="Spring.Data.Support.NullMappingDataReader, Spring.Data"/>
          </object>
    
          <!--事务管理器-->
          <object id="transactionManager"
                 type="Spring.Data.Core.AdoPlatformTransactionManager, Spring.Data">
            <property name="DbProvider" ref="DbProvider"/>
          </object>
    
    
          <!--事务切面-->
          <tx:attribute-driven/>
    
        </objects>
      </spring>
    
    </configuration>
    View Code

    9.控制台文件

    namespace SpringNetTrans
    {
        class Program
        {
            static void Main(string[] args)
            {
                AdoTransaction();
                Console.ReadKey();
            }
    
            public static void AdoTransaction()
            {
                IApplicationContext ctx = ContextRegistry.GetContext();
                IUserService service = (IUserService)ctx.GetObject("userService");
                service.SaveData("Kimisme", 27, "1233456");
            }
    
    
            public static void AdoDeleteTransaction()
            {
                IApplicationContext ctx = ContextRegistry.GetContext();
                IUserService service = (IUserService)ctx.GetObject("userService");
                service.DeleteData("Kimisme");
            }
        }
    }
    View Code
  • 相关阅读:
    剖析startup_stm32f407xx.s文件
    我们无法在此设备上激活windows,因为无法连接到你的组织的激活服务器。请确保已连接到你的组织服务器,然后重试。如果仍存在激活问题,请联系组织的支持人员,错误代码:ox80070078
    【DW·智慧海洋(捕鱼作业分析)打卡】task05_模型融合 (简单辨析了一下stacking和blending)
    【DW·智慧海洋(捕鱼作业分析)打卡】task04_模型建立
    【心跳信号分类预测】Datawhale打卡- Task05 模型融合 (尝试记录)
    【心跳信号分类预测】Datawhale打卡- Task4 建模与调参 (贝叶斯搜索调参调包实践)
    【心跳信号分类预测】Datawhale打卡- Task03 特征工程
    【DW·智慧海洋(捕鱼作业分析)打卡】task03_特征工程 (复现top的各种特征工程:分箱特征、网格特征、统计特征、Embedding特征)
    【DW·智慧海洋(捕鱼作业分析)打卡】task02_数据分析 (刺网/围网/拖网)
    【DW·智慧海洋(捕鱼作业分析)打卡】task01_地理数据分析常用工具
  • 原文地址:https://www.cnblogs.com/kimisme/p/5350930.html
Copyright © 2011-2022 走看看