Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层

简介:

   在上一篇中,我们已经搭建起了整个解决方案的项目,并且建好了数据库,完成了实体类和Nhibernate映射文件.在本文中,将定义数据访问接口,并利用Nhibernate实现接口,利用Spring.net配置起来dao.并对其进行单元测试.

   数据访问层也和Petshop等框架一样,分为数据访问的接口以及实现,不过这里的数据访问实现相比之下就清晰和明显了的多,Nhibernate本身就是支持多数据库的,所以这样做不是为了多数据库,而是为了Nhibernate的可插拨,即使哪一天发现由于一些问题,比如说性能问题,可以重新实现IDAL接口,而不会对业务层造成比较大的改动.

   说到这里,其实我们还不太清楚前台到底需要哪些功能,所以我们就先简单的实现实体的增删改查吧.等需要其它的功能时,再来完善接口和实现.

   DirectCenter.IDAL不依赖于Spring或者是Nhibernate,只需要添加项目引用DirectCenter.Model.以用户来说吧,添加接口IUserDao.cs

IUserDao.cs

 

   同样,我们添加ICompanyDao和IDepartmentDao.

   接下来,我们实现刚才的数据接口,DirectCenter.DAL项目中添加对DirectCenter.IDAL和DirectCenter.Model的项目引用,然后再添加引用Spring.Data.NHibernate20,Spring.Data,Spring.Core(在lib/Spring.net下面).

     一种方式是可以直接使用Nhibernate完成数据访问:

       

UserDao.cs

 

     不过我们不打算使用这种单纯Nhibernate的方式,而是使用继承spring对hibernate的封装类HibernateDaoSupport,这样我们把Spring.net作为Nhibernate的容器可以方便的进行统一管理和利用一些特性.

    

UserDao.cs

 

   同时添加CompanyDao和DepartmentDao.

    一个HibernateTemplate怎么就完成了上面的这些操作.Nhibernate相关的呢?Session在哪里?通过查看代码,我们知道HibernateTemplate是HibernateDaoSupport的一个属性,我们就截取HibernateTemplate的一些代码片断来简单看一下:

   

HibernateTemplate.cs

    本质还是通过调用Nhibernate的Session来完成的,具体的原来请查看相关资料或源代码.

    但是只有上面的代码肯定是不行的,我们在哪里连接数据库呢?通过IOC向HibernateTemplate中注入SessionFactory,然后在Spring.net中声明一个SessionFactory的对象.

    DirectCenter.App添加一个Dao.xml,主要是是进行数据访问的配置.

     

Dao.xml

 

    注意: 1.NHibernateSessionFactory的MappingAssemblies属性,是我们实体映射文件所在的程序集,也可以通过MappingResources属性引入映射文件,通过ConfigFilenames属性引入Nhibernate的配置文件hibernate.cfg.xml

            2.这里的HibernateProperties属性是指定的是dialect,而不是hibernate.dialect.这是Nhibernate 2.0更新的.不然会提示"Could not find the dialect in the configuration"

 

接下来,就让测试一下我们的代码吧.稍微检验一下我们的成果.为DirectCenter.UnitTest项目添加相关的引用,其中重要的是NUnit.Framework和Spring.Testing.NUnit.
添加测试类,UserDaoTest.cs

 

UserDaoTest.cs

 

objectx.xml中引入我们的配置文件dao.xml ,另外应用程序配置文件App.Config中有Spring.Net和Nhibernate的相关配置信息,就不贴太多代码了.呵呵

利用nunit运行SaveUserTest,发现显示测试成功了,不过查看数据库为什么没有添加进去呢??? ?

淡定淡定,因为我们并没有提交,在最后加上   transactionManager.Commit(transactionStatus);再看一下结果..剩余的我还都并没有测试,如果你尝试,就尝试其它的dao的方法吧...

 

回过头来,看我们的Dao的实现,基本上都是那几种,而且继承于HibernateDaoSupport ,这样使我们的数据访问直接依赖于Spring.net和Nhibernate,以后想直接拿掉Spring.net或者是更换版本都会有些困难,怎么办呢.可以写一个基类继承于HibernateDaoSupport ,并且通过泛型或者是获以当前类型统一完成这些操作.这个我看下,可以放在最后再来讲一下我的实现.

 

 ps.希望这篇文章能够给也在使用类似框架的朋友带来些收获,这样也不会违背放在首页的原则.目的还是想以这个框架的整合为主,以及我在使用的过程中遇到的一些问题和大家分享.至于Spring.Net或者是Nhibernate,Asp.net mvc相关的技术,请参考相关的学习资料.或者是在这里给我留言.

 

 本次代码下载

作者:孤独侠客似水流年
出处:http://lonely7345.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

分类: .NET

本文转自孤独侠客博客园博客,原文链接:http://www.cnblogs.com/lonely7345/archive/2008/09/09/1287212.html,如需转载请自行联系原作者
目录
相关文章
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
670 5
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
419 7
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
298 1
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
360 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
343 0
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
496 0
|
10月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1350 0
|
11月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1190 0
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
535 0
|
7月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
590 4