Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
2008-09-09 00:32
495 查看
在上一篇中,我们已经搭建起了整个解决方案的项目,并且建好了数据库,完成了实体类和Nhibernate映射文件.在本文中,将定义数据访问接口,并利用Nhibernate实现接口,利用Spring.net配置起来dao.并对其进行单元测试.
数据访问层也和Petshop等框架一样,分为数据访问的接口以及实现,不过这里的数据访问实现相比之下就清晰和明显了的多,Nhibernate本身就是支持多数据库的,所以这样做不是为了多数据库,而是为了Nhibernate的可插拨,即使哪一天发现由于一些问题,比如说性能问题,可以重新实现IDAL接口,而不会对业务层造成比较大的改动.
说到这里,其实我们还不太清楚前台到底需要哪些功能,所以我们就先简单的实现实体的增删改查吧.等需要其它的功能时,再来完善接口和实现.
DirectCenter.IDAL不依赖于Spring或者是Nhibernate,只需要添加项目引用DirectCenter.Model.以用户来说吧,添加接口IUserDao.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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
数据访问层也和Petshop等框架一样,分为数据访问的接口以及实现,不过这里的数据访问实现相比之下就清晰和明显了的多,Nhibernate本身就是支持多数据库的,所以这样做不是为了多数据库,而是为了Nhibernate的可插拨,即使哪一天发现由于一些问题,比如说性能问题,可以重新实现IDAL接口,而不会对业务层造成比较大的改动.
说到这里,其实我们还不太清楚前台到底需要哪些功能,所以我们就先简单的实现实体的增删改查吧.等需要其它的功能时,再来完善接口和实现.
DirectCenter.IDAL不依赖于Spring或者是Nhibernate,只需要添加项目引用DirectCenter.Model.以用户来说吧,添加接口IUserDao.cs
UserDaoTest.cs using System; using NUnit.Framework; using Spring.Testing.NUnit; using DirectCenter.Model; using DirectCenter.IDAL; namespace DirectCenter.UnitTest { [TestFixture] publicclass UserDaoTest : AbstractTransactionalDbProviderSpringContextTests { protectedoverridestring[] ConfigLocations { get { returnnew String[] { "objects.xml" }; } } protected IUserDao UserDao { get { return applicationContext.GetObject("UserDao") as IUserDao; } } [Test] publicvoid SaveUserTest() { User user =new User(); user.UserID ="buyer000"; user.Password ="1356"; user.UserName ="刘翔"; user.ValidFrom = Convert.ToDateTime("2008-8-18"); user.ValidTo = Convert.ToDateTime("2012-8-18"); user.CreateTime = DateTime.Now; UserDao.Save(user); } } }
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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
- (标记)Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 By 似水流年
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 1
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs系列(收藏)
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 4 ----业务逻辑层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 1
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 5 ----asp.net MVC+Extjs
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2----整体架构
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 1---准备
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 4 ----业务逻辑层
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs系列总结(持续更新)
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs系列总结