转 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);
         }
     }
}

转载于:https://www.cnblogs.com/soundcode/archive/2010/12/20/1911846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值