.net企业级架构实战之4——Spring.net下的nHibernate数据访问模板[1]
2010-08-13 11:34
671 查看
在spring.net中集成nHibernate可以获得许多值得称道的特性。比如:基于元标记(meta Attributes)的事务支持、对物理数据库的抽象、对数据层进行切面式拦截。
好处是不少,但首先要学会配置。为了这个集成的环境,建立一个配置文件 applicationContext.xml :
woodigg.DAO
woodigg.model
OK,这里有几处需要说明:
一、woodigg.DAO.SQLProvider 是一个数据结构类,用以描述物理数据库的相关信息,诸如连接串、元数据信息等。这里其实就用到了连接串,在配置中植入位置、帐号信息等就能连接到数据源。这个SQLProvider类结构如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Spring.Data.Common;
namespace woodigg.DAO
{
public class SQLProvider : IDbProvider
{
#region IDbProvider 成员
private string _connectionString = "";
public string ConnectionString
{
get
{
return this._connectionString;
}
set
{
this._connectionString = value;
}
}
public IDbCommand CreateCommand()
{
return null;
}
public object CreateCommandBuilder()
{
return null;
}
public IDbConnection CreateConnection()
{
return null;
}
public IDbDataAdapter CreateDataAdapter()
{
return null;
}
public IDbDataParameter CreateParameter()
{
return null;
}
public string CreateParameterName(string name)
{
return null;
}
public string CreateParameterNameForCollection(string name)
{
return null;
}
public IDbMetadata DbMetadata
{
get
{
return null;
}
}
public string ExtractError(Exception e)
{
return null;
}
public bool IsDataAccessException(Exception e)
{
return false;
}
#endregion
}
}
二、在SessionFactory配置中,指明需要环境映射的程序集名称,通俗说法是:哪些层会在集成环境中,被直接引用?这里以示例项目来说 是:woodigg.DAO和woodigg.Model,分别为实体(上一节中生成的一堆.cs实体)层,和数据映射文件(被嵌入在项目中的 hbm.xml文件)所在的数据访问层。
三、HibernateProperties节中,可以指定调试时是否显示生成的sql语句。同时,能配置缓存事宜:此处用到的是NHibernate.Caches.SysCache。
四、配置HibernateTemplate。nHibernate的模板,既nHibernate项目已经为开发者写好了一套通用的方法,能便捷的操作数据库,此处将SessionFactory植入引用即能让它工作起来。(并不是所有的复杂SQL,它都能做到,不能完成的功能,我们得自己写,这个马上会交待)。
五、DaoTemplate,就是我自己写的一个基于以上配置的复杂模板,能完成诸如Distinct,top,调用分页存储过程等一干复杂SQL功能,抛出来做点贡献吧:
好处是不少,但首先要学会配置。为了这个集成的环境,建立一个配置文件 applicationContext.xml :
woodigg.DAO
woodigg.model
OK,这里有几处需要说明:
一、woodigg.DAO.SQLProvider 是一个数据结构类,用以描述物理数据库的相关信息,诸如连接串、元数据信息等。这里其实就用到了连接串,在配置中植入位置、帐号信息等就能连接到数据源。这个SQLProvider类结构如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Spring.Data.Common;
namespace woodigg.DAO
{
public class SQLProvider : IDbProvider
{
#region IDbProvider 成员
private string _connectionString = "";
public string ConnectionString
{
get
{
return this._connectionString;
}
set
{
this._connectionString = value;
}
}
public IDbCommand CreateCommand()
{
return null;
}
public object CreateCommandBuilder()
{
return null;
}
public IDbConnection CreateConnection()
{
return null;
}
public IDbDataAdapter CreateDataAdapter()
{
return null;
}
public IDbDataParameter CreateParameter()
{
return null;
}
public string CreateParameterName(string name)
{
return null;
}
public string CreateParameterNameForCollection(string name)
{
return null;
}
public IDbMetadata DbMetadata
{
get
{
return null;
}
}
public string ExtractError(Exception e)
{
return null;
}
public bool IsDataAccessException(Exception e)
{
return false;
}
#endregion
}
}
二、在SessionFactory配置中,指明需要环境映射的程序集名称,通俗说法是:哪些层会在集成环境中,被直接引用?这里以示例项目来说 是:woodigg.DAO和woodigg.Model,分别为实体(上一节中生成的一堆.cs实体)层,和数据映射文件(被嵌入在项目中的 hbm.xml文件)所在的数据访问层。
三、HibernateProperties节中,可以指定调试时是否显示生成的sql语句。同时,能配置缓存事宜:此处用到的是NHibernate.Caches.SysCache。
四、配置HibernateTemplate。nHibernate的模板,既nHibernate项目已经为开发者写好了一套通用的方法,能便捷的操作数据库,此处将SessionFactory植入引用即能让它工作起来。(并不是所有的复杂SQL,它都能做到,不能完成的功能,我们得自己写,这个马上会交待)。
五、DaoTemplate,就是我自己写的一个基于以上配置的复杂模板,能完成诸如Distinct,top,调用分页存储过程等一干复杂SQL功能,抛出来做点贡献吧:
相关文章推荐
- .net企业级架构实战之4——Spring.net下的nHibernate数据访问模板[2]
- .net企业级架构实战之4——Spring.net下的nHibernate数据访问模板
- [转].net企业级架构实战之4——Spring.net下的nHibernate数据访问模板
- DotNet企业级架构实战之4—Spring.net下的nHibernate数据访问模板
- .net企业级架构实战之4——Spring.net下的nHibernate数据访问模板
- .net企业级架构实战之2——Spring.net对象装配
- .net企业级架构实战之7——Spring.net整合Asp.net mvc
- .net企业级架构实战之2——Spring.net对象装配
- .net企业级架构实战之6——Spring.net管理web services
- .net企业级架构实战之7——Spring.net整合Asp.net mvc
- .net企业级架构实战之2——Spring.net对象装配【精华】
- .net企业级架构实战之7——Spring.net整合Asp.net mvc
- .net企业级架构实战之3——业务对象建模及codesmith模板
- .NET 分布式架构开发实战之三 数据访问深入一点的思考
- .NET 分布式架构开发“.NET研究”实战之三 数据访问深入一点的思考
- Spring.NET 1.3.2 集成 NHibernate 3.2 - 4 - 实现基本的数据访问
- [原创].NET 分布式架构开发实战之三 数据访问深入一点的思考
- DotNet企业级架构实战之7——Spring.net整合Asp.net mvc
- .net企业级架构实战之5——基于接口的访问层实现
- 一起谈.NET技术,.NET 分布式架构开发实战之三 数据访问深入一点的思考