您的位置:首页 > 编程语言 > ASP

Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层

2010-06-20 00:44 661 查看
什么是持久层?先解释什么是持久,英文persistence,将内存中的数据固化,保持在物理储存设备中。然而在企业应用中,往往通过关系型数据库来完成这一过程。那么持久层的定义是:相对于三层架构中的表示层、业务层而言,专门负责持久化数据的独立领域。 设计模式中的“单一职责”原则确定了分层的目的,说白了,持久层就是专门与数据库打交道的。如图1所示

RepositoryBase

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;

using Spring.Data.NHibernate.Generic.Support;
using NHibernate.Linq;

public abstract class RepositoryBase<T> : HibernateDaoSupport, IRepository<T> where T : class
{

public virtual object Save(T entity)
{
return this.HibernateTemplate.Save(entity);
}

public virtual T Get(object id)
{
return this.HibernateTemplate.Get<T>(id);
}

public virtual IQueryable<T> LoadAll()
{
return this.Session.Linq<T>();
}

public virtual void Update(T entity)
{
this.HibernateTemplate.Update(entity);
}

public void Delete(T entity)
{
this.HibernateTemplate.Delete(entity);
}

public virtual void SaveOrUpdate(T entity)
{
this.HibernateTemplate.SaveOrUpdate(entity);
}

}

  这样,同为增、删、改、查的代码,我只需要写一遍就可以了。对于数据库的迁移,可以通过配置数据库方言来实现其目的。在使用Spring.NET作为IoC框架中,我们不用关心和有意去编写数据库事务,并且NHibernate的Session管理也交给Spring.NET来处理。重构后的代码与PetShop4.0的DAL代码比较起来,代码行数减少了很多,但代码的可维护性和灵活性却有明显的提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐