『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

原创 2015年07月06日 20:32:36

1. 概述

        一个月前,应部门经理要求,搭建了Spring.NET+NHibernate的一个数据查询系统。之前没用过这两个框架,也算是先学现买,在做完设计之后花了一周搭建成功了。其中,还加上了我的一些改进思想,把DAO和BLL之中相似且常用的增删改查通过泛型T抽象到了DAO和BLL的父类中,其DAO和BLL子类只需继承父类就拥有了这些方法。和之前的一个数据库表(视图)对应一个实体,一个实体对应一个DAO和一个BLL,而每一个DAO和BLL都是相似的增删改查相比,减少了大量代码量。现在就对这些知识做一个总结,方便自己学习,同时把自己的所思所悟分享给大家,不足知足望大家指点迷津!

 

2. 知识准备

        温馨提示,学习本系列知识,须至少具备如下知识。否则请移步,熟悉下列知识之后再回来学习:

        1.C#基础扎实,熟悉泛型、反射、linq(最好有所了解)、ADO.NET

        2.熟悉XML

        3.对控制反转(IOC)、依赖注入(DI),Spring.net等理论知识有所了解,可以参考如下博文:

          Spring.NET学习笔记:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_Index.html

          SPRING.NET 1.3.2学习:http://blog.csdn.net/lee576/article/category/1353489/2

        4.对Nhibernate理论知识有所了解,参考资料

         NHibernate之旅:http://www.cnblogs.com/lyj/archive/2008/10/10/1308267.html

         Nhibernate从入门到精通:http://www.cnblogs.com/GoodHelper/archive/2011/02/14/nhiberante_01.html

        5.Spring.NET+Nhibernate参考资料:

         Spring.NET学习笔记18——整合NHibernate(基础篇)Level 300:http://www.cnblogs.com/GoodHelper/archive/2009/11/18/SpringNet_NHibernate.html

         Spring.NET 1.3.2 集成 NHibernate 3.2:http://www.cnblogs.com/haogj/archive/2012/07/28/nhibernate.html

 

3.项目介绍

         本项目后端采用Spring.NET2.0+Nhibernate4.0的经典三层架构,web端采用的是ASP.NET(本来打算用MVC,考虑到项目组成员对web开发不熟),项目结构如下:

          

          说明:

          Model:实体层,在NHibernate中也叫持久层

          IDAO:数据库访问层接口

          NHibernateDAO:实现IDAO,NHibernate框架实现数据库访问层

          IBLL:业务逻辑接口层

          BLL:业务逻辑层

          Common:工具类库层

          WebUI:表现层,ASP.NET,采用了BootStrap框架。这一层不是本次学习的重点

 

4.Spring.NET简单介绍

          Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NETJava版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。

         Spring.NETIOC容器所解决的,正是如何在企业应用中将类、对象和服务组合成应用程序的问题。IOC容器通过很正统(按:formalized,言下之意是这些方式都是已经定型了的、经过了业界多年考验的)的方式将分散的组件组合成完整的应用程序。Spring.NET框架所采用的,都是被业界无数应用程序考验多年的、已经被定型为设计模式的最佳编程方式,实际上,这些模式已经成为我们架构和开发时的法典,而通过Spring.NET,我们可以直接将它们整合到自己的应用程序中。目前已有很多组织和机构用Spring框架开发出了强壮的、维护性好的应用程序,这确实是一件非常好的事情。

         

         Spring.NET框架包含了许多功能方面,它们都进入如下图所示的模块组织。下图显示了Spring.NET各核心模块:

Spring.Core作为整个框架的基础, ,实现了依赖注入的功能。

Spring.AOP为业务对象提供面向方面编程(AOP)的支持。

Spring.Data定义了一个抽象的数据访问层,可以跨越各种数据访问技术(从ADO.NET到各种ORM)进行数据访问。

Spring.Data.NHibernate使用此模块集成到Spring的声明式事务管理功能NHibernate的能容易地操作ADO.NETNHibernate的混合在同一事务。


 5.NHibernate框架简单介绍

         NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象关系映射(O/R MappingObject Relational Mapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

         NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQLADO.NET处理数据的时间。NHibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。并请记住NHibernate作为数据库访问层,是与你的程序紧密集成的。不过我个人觉得:NHibernate的性能明显没有纯sql性能好,不过在不太多考虑性能的情况下,它是比较好的选择!

 

 

       

 

 

         

 

       

 

 

 

  

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

整合ASP.NET MVC5,Spring.Net,NHibernate

所有的程序集引用,都可以在Nuget中获取,需要注意除了Spring和NHibenate的程序集外,还要引用Spring.Net NHibernate Support。         为了结构清晰,...
  • qq_29227939
  • qq_29227939
  • 2016年11月12日 15:41
  • 2816

Spring.Net 泛型对象注入

[C#代码] [Ioc容器配置] 重点:1. type需要明确注入的类型,而不是仅仅一个占位符(spring必须知道需要注入的是个什么东西)     2....
  • colin788
  • colin788
  • 2015年04月02日 08:25
  • 437

集合框架_泛型概述和基本使用

package cn.itcast_01; import java.util.ArrayList; import java.util.Iterator; /* * ArrayList存储字符串并...
  • L1585931143
  • L1585931143
  • 2016年12月24日 01:20
  • 208

JDK5新特性之泛型

概述 泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。 格式: 此处的数据类型只能是引用...
  • gafeng123456
  • gafeng123456
  • 2016年02月29日 12:38
  • 450

java泛型详解

学习java或者软件开发的出去编程有时候项目经理经常会问到有关泛型的理解; 泛型:是指在定义类或者接口的时候可以为类和接口指定类型形参,该类型形参在定义变量和创建对象的确定 1、定义泛型类,程序实例代...
  • hgd613
  • hgd613
  • 2013年10月12日 20:24
  • 13060

java机制学习——反射,注解,代理,泛型

java机制——反射,注解,代理,泛型
  • hdkjdhdj
  • hdkjdhdj
  • 2016年11月08日 15:17
  • 625

java泛型通俗讲解

1.为什么需要泛型我们知道java是属于强类型编程语言。变量在使用之前,需要先进行定义,而定义个变量时必须要指定其数据类型,这样编译期在编译阶段就能将很多类型错误消灭在萌芽状态。如果我们有这样一个需求...
  • bitcarmanlee
  • bitcarmanlee
  • 2016年08月27日 17:26
  • 2724

泛型是什么?为什么要使用泛型?

我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int型数据,另一个是处理String类型数据,或者其它自定义类型数据,但是我们没有办法,只能分别写多个方法处理每种数据类型,因为方法的...
  • qingmengwuhen1
  • qingmengwuhen1
  • 2016年08月07日 00:06
  • 4316

[X-Code7新功能之一]OC的泛型支持

[X-Code7新功能之一]OC的泛型支持
  • liyanq528
  • liyanq528
  • 2016年04月05日 21:37
  • 2804

对泛型和多态的粗浅理解

泛型和多态,Java面向对象的两个重要概念,下面以一个现实中的简单例子描述一下这两个概念: 在舞台上,魔术师在变魔术时,有几个箱子,每个箱子里面放一个动物, 1.刚开始,魔术师处于入门...
  • qq_34324677
  • qq_34324677
  • 2017年02月18日 15:05
  • 347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)
举报原因:
原因补充:

(最多只允许输入30个字)