博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转 Spring.NET 与 NHibernate 的整合
阅读量:6814 次
发布时间:2019-06-26

本文共 3191 字,大约阅读时间需要 10 分钟。

我们成功的运行了自己的第一个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);

         }

     }

}

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/20/1911846.html,如需转载请自行联系原作者

你可能感兴趣的文章
java B2B2C Springboot电子商城系统-高可用的服务注册中心
查看>>
Dubbo的总体架构
查看>>
Spring Cloud微服务架构代码结构详细讲解
查看>>
我的友情链接
查看>>
LVS启(禁)用成员
查看>>
2016 IT 运维工作计划及学习
查看>>
将一个数的二进制位模式从左到右翻转并输出
查看>>
jQuery学习之jQuery Ajax用法详解
查看>>
关于JEPLUS软件介绍——JEPLUS软件快速开发平台
查看>>
动态增加UIView到当前视图中
查看>>
怎么能看透信封
查看>>
找工作的程序员必懂的Linux
查看>>
JavaScript的浏览器兼容性问题小结。
查看>>
Oracle Hint的用法
查看>>
Postfix邮件系统
查看>>
《编写可读代码的艺术》读书文摘--第一部分 表面层次的改进
查看>>
使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3
查看>>
网管工作是否值得做下去?
查看>>
神行者PD10-adb push逃脱ro权限
查看>>
JPA(四)之实体关系一对一
查看>>