• 转 Spring.NET 与 NHibernate 的整合


    我们成功的运行了自己的第一个Spring.NET程序和第一个NHibernate程序。下面我们将上面的程序整合到一个项目中来。让Spring.NET的容器来管理NHibernate。



    建立新的项目(SpringNHibernateSample)

    项目名称为:SpringNHibernateSample 名字空间:OKEC.Sample



    添加NHibernate程序

    将NHibernateSample项目的User.cs、User.hbm.xml加入的新的项目中。
    并修改User.hbm.xml,将其中的
    <class name=" OKEC.Sample.NHibernate.NHibernateTest.User,NHibernateSample"
    table="my_users">

    改为
    <class name=" OKEC.Sample.NHibernate.NHibernateTest.User,SpringNHibernateSample"
    table="my_users">




    添加Spring.NET的程序

    n        首先,需要将SpringSample项目中的HelloTest.cs、Spring_bean.xml、SpringContext.cs加入到新的项目,并修改其中有用到程序集相关的地方。
    如将Spring_bean.xml中的:
    <object id="Hello" type="OKEC.Sample.Spring.HelloTest,SpringSample" />
    改为
    <object id="Hello" type="OKEC.Sample.Spring.HelloTest,SpringNHibernateSample" />


    n        然后,添加一个为NHibernate提供DbProvider的实现类,此类实现了Spring.Data.Common.IDbProvider接口,为NHibernate提供DbProvider所需的链接字串(ConnectionString)。

    using System;
    using Spring.Data.Common;
    namespace OKEC.Sample.Spring
    {
        /// <summary>
        /// SQLPriv 的摘要说明。
        /// </summary>
        public class SQLProvider:IDbProvider
         {
            public SQLProvider()
             {
                //
                // TODO: 在此处添加构造函数逻辑
                //
             }
            #region IDbProvider 成员
            public System.Data.IDbConnection CreateConnection()
             {
                // TODO:   添加 SQLPriv.CreateConnection 实现
                return null;
             }
            public string CreateParameterName(string name)
             {
                // TODO:   添加 SQLPriv.CreateParameterName 实现
                return null;
             }
            public System.Data.IDbDataParameter CreateParameter()
             {
                // TODO:   添加 SQLPriv.CreateParameter 实现
                return null;
             }
            private string _connectionString="";
            public string ConnectionString
             {
                get
                 {
                    // TODO:   添加 SQLPriv.ConnectionString getter 实现
                    return _connectionString;
                 }
                set
                 {
                     _connectionString = value;
                    // TODO:   添加 SQLPriv.ConnectionString setter 实现
                 }
             }
            public string ExtractError(Exception e)
             {
                // TODO:   添加 SQLPriv.ExtractError 实现
                return null;
             }
            public System.Data.IDbDataAdapter CreateDataAdapter()
             {
                // TODO:   添加 SQLPriv.CreateDataAdapter 实现
                return null;
             }
            public bool IsDataAccessException(Exception e)
             {
                // TODO:   添加 SQLPriv.IsDataAccessException 实现
                return false;
             }
            public System.Data.IDbCommand CreateCommand()
             {
                // TODO:   添加 SQLPriv.CreateCommand 实现
                return null;
             }
            public object CreateCommandBuilder()
             {
                // TODO:   添加 SQLPriv.CreateCommandBuilder 实现
                return null;
             }
            public IDbMetadata DbMetadata
             {
                get
                 {
                    // TODO:   添加 SQLPriv.DbMetadata getter 实现
                    return null;
                 }
             }
            #endregion
         }
    }



    n        最后,添加一个Spring.Data.NHibernate对NHibernate的封装对像,此对像实现对User对像数据操作,继承自
    Spring.Data.NHibernate.Support.HibernateDaoSupport。
    using System;
    using System.Collections;
    using Spring.Data.NHibernate.Support;
    namespace OKEC.Sample.NHibernate.NHibernateTest
    {
        /// <summary>
        /// UserDao 的摘要说明。
        /// </summary>
        public class UserDao : HibernateDaoSupport
         {
            public UserDao()
             {    //
                // TODO: 在此处添加构造函数逻辑
                //
             }
            public bool SaveObject(User user)
             {
                 HibernateTemplate.Save(user);
                return true;
             }
            public bool DeleteObject(User user)
             {
                 HibernateTemplate.Delete(user);
                return true;
             }
            public bool UpdateObject(User user)
             {
                 HibernateTemplate.Update(user);
                return true;
             }
            public IList GetAllObjectsList()
             {
                return HibernateTemplate.LoadAll(typeof(User));
             }
            public User Load(Object ID)
             {
                return (User)HibernateTemplate.Load(typeof(User),ID);
             }
         }
    }

  • 相关阅读:
    关于Android架构那些事
    关于投资那些事
    关于单例模式的N种实现方式
    关于如何避免Android中Bitmap引起的OutOfMemoryError
    关于Java设计模式的一些概况
    阿里云服务器使用记录:服务器运行的网页无法访问
    毕业设计进度:3月22日
    前端框架:bootstrap多个模态框跳转使用时发生的页面左移问题
    毕业设计进度:3月20日
    毕业设计进度:3月19日
  • 原文地址:https://www.cnblogs.com/soundcode/p/1911846.html
Copyright © 2020-2023  润新知