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代码比较起来,代码行数减少了很多,但代码的可维护性和灵活性却有明显的提升。
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代码比较起来,代码行数减少了很多,但代码的可维护性和灵活性却有明显的提升。
相关文章推荐
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(一)——架构设计
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型
- Spring.NET企业架构实践之Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(一)——架构设计
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(一)——架构设计
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(一)——架构设计
- Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用
- Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用
- Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用
- Spring.NET企业架构 Nhibernate + .NET三层+Spring.net(ado)+ ASP.NET MVC完美结合
- 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
- "开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo"项目分析
- 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十一【Area及URL架构的最佳实践】