转 Spring.NET 与 NHibernate 的整合
生活随笔
收集整理的這篇文章主要介紹了
转 Spring.NET 与 NHibernate 的整合
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我們成功的運(yùn)行了自己的第一個(gè)Spring.NET程序和第一個(gè)NHibernate程序。下面我們將上面的程序整合到一個(gè)項(xiàng)目中來(lái)。讓Spring.NET的容器來(lái)管理NHibernate。建立新的項(xiàng)目(SpringNHibernateSample)
項(xiàng)目名稱為:SpringNHibernateSample 名字空間:OKEC.Sample添加NHibernate程序
將NHibernateSample項(xiàng)目的User.cs、User.hbm.xml加入的新的項(xiàng)目中。
并修改User.hbm.xml,將其中的
n????????首先,需要將SpringSample項(xiàng)目中的HelloTest.cs、Spring_bean.xml、SpringContext.cs加入到新的項(xiàng)目,并修改其中有用到程序集相關(guān)的地方。
如將Spring_bean.xml中的:<object id="Hello" type="OKEC.Sample.Spring.HelloTest,SpringSample" />
改為<object id="Hello" type="OKEC.Sample.Spring.HelloTest,SpringNHibernateSample" />n????????然后,添加一個(gè)為NHibernate提供DbProvider的實(shí)現(xiàn)類,此類實(shí)現(xiàn)了Spring.Data.Common.IDbProvider接口,為NHibernate提供DbProvider所需的鏈接字串(ConnectionString)。
using System;
using Spring.Data.Common;
namespace OKEC.Sample.Spring
{
????/// <summary>
????/// SQLPriv 的摘要說(shuō)明。
????/// </summary>
????public class SQLProvider:IDbProvider
???? {
????????public SQLProvider()
???????? {
????????????//
????????????// TODO: 在此處添加構(gòu)造函數(shù)邏輯
????????????//
???????? }
????????#region IDbProvider 成員
????????public System.Data.IDbConnection CreateConnection()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateConnection 實(shí)現(xiàn)
????????????return null;
???????? }
????????public string CreateParameterName(string name)
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateParameterName 實(shí)現(xiàn)
????????????return null;
???????? }
????????public System.Data.IDbDataParameter CreateParameter()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateParameter 實(shí)現(xiàn)
????????????return null;
???????? }
????????private string _connectionString="";
????????public string ConnectionString
???????? {
????????????get
???????????? {
????????????????// TODO:?? 添加 SQLPriv.ConnectionString getter 實(shí)現(xiàn)
????????????????return _connectionString;
???????????? }
????????????set
???????????? {
???????????????? _connectionString = value;
????????????????// TODO:?? 添加 SQLPriv.ConnectionString setter 實(shí)現(xiàn)
???????????? }
???????? }
????????public string ExtractError(Exception e)
???????? {
????????????// TODO:?? 添加 SQLPriv.ExtractError 實(shí)現(xiàn)
????????????return null;
???????? }
????????public System.Data.IDbDataAdapter CreateDataAdapter()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateDataAdapter 實(shí)現(xiàn)
????????????return null;
???????? }
????????public bool IsDataAccessException(Exception e)
???????? {
????????????// TODO:?? 添加 SQLPriv.IsDataAccessException 實(shí)現(xiàn)
????????????return false;
???????? }
????????public System.Data.IDbCommand CreateCommand()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateCommand 實(shí)現(xiàn)
????????????return null;
???????? }
????????public object CreateCommandBuilder()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateCommandBuilder 實(shí)現(xiàn)
????????????return null;
???????? }
????????public IDbMetadata DbMetadata
???????? {
????????????get
???????????? {
????????????????// TODO:?? 添加 SQLPriv.DbMetadata getter 實(shí)現(xiàn)
????????????????return null;
???????????? }
???????? }
????????#endregion
???? }
}
n????????最后,添加一個(gè)Spring.Data.NHibernate對(duì)NHibernate的封裝對(duì)像,此對(duì)像實(shí)現(xiàn)對(duì)User對(duì)像數(shù)據(jù)操作,繼承自
Spring.Data.NHibernate.Support.HibernateDaoSupport。
using System;
using System.Collections;
using Spring.Data.NHibernate.Support;
namespace OKEC.Sample.NHibernate.NHibernateTest
{
????/// <summary>
????/// UserDao 的摘要說(shuō)明。
????/// </summary>
????public class UserDao : HibernateDaoSupport
???? {
????????public UserDao()
???????? {????//
????????????// TODO: 在此處添加構(gòu)造函數(shù)邏輯
????????????//
???????? }
????????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);
???????? }
???? }
}
總結(jié)
以上是生活随笔為你收集整理的转 Spring.NET 与 NHibernate 的整合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#.NET编程----Spring.N
- 下一篇: NHibernate介绍