.net企业级架构实战之4——Spring.net下的nHibernate数据访问模板[1]

在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功能,抛出来做点贡献吧:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值