知识大全 Asp.Net中NHiernate的Session的管理
Posted 知
篇首语:你若要喜爱你自己的价值,你就得给世界创造价值。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Asp.Net中NHiernate的Session的管理相关的知识,希望对你有一定的参考价值。
Asp.Net中NHiernate的Session的管理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
NHibernate中的Session 在我的理解似乎就相当于数据库中连接 因为它也有Open/Close的方法 我没有研究NHibernate的源码 不知道这种理解是否有误?我在网上搜了很多的关于Session的管理 大多都是在我需要数据库操作的时候 就OpenSession() 操作完后就CloseSession() 这有点拟似如我们刚开始学习ADO NET的时候 要Connection对象Open() 数据处理完后就Close() 但是这里就带来了一个弊端 因为Connection的频繁的开关是非常消耗系统资源的 我记得以前在制作一个数据的录入界面的时 因为这个录入的界面数据元素比较多 而且很多DropDownList需要在数据库中读取数据并绑定 这样在该页面的Page_Load中需要调用相应对象的方法一一从数据库中检索数据绑定DropDownList 因为我们这些对象的方法都是使用独立的Connection 都有自己的Connection的Open和Close 所以 导致这个页面一打开就需要等待好长的时间 比较慢 后来我们将这些需要绑定DropDownList的数据通过一个数据处理成一个DataSet 并将DataSet中的DataTable与DropDownList绑定 这样只需要一次的Connection的Open/Close 页面快了好多 所以 我觉得上述的Session的管理办法不是很妥当 后来 我看了Cuyahoga开源项目中他的Session管理 他使用的 session per request 这种模式 从字面上理解就是他为每个Request创建一个Session 直到这个请求销毁 那么这个Session也就Close了 而Cuyahoga他的做法和session per request有点不同地方就是 他为每个Request都创建了一个CoreRepository对象 CoreRepository是系统所需要的数据处理服务的类 他的做法是先创建了HttpModule(NHSessionModule)用来创建CoreRepository对象和销毁CoreRepository对象 如下 private void Context_BeginRequest(object sender EventArgs e) // Create the repository for Core objects and add it to the current HttpContext CoreRepository cr = new CoreRepository(true); HttpContext Current Items Add( CoreRepository cr); private void Context_EndRequest(object sender EventArgs e) // Close the NHibernate session if (HttpContext Current Items[ CoreRepository ] != null) CoreRepository cr = (CoreRepository)HttpContext Current Items[ CoreRepository ]; cr CloseSession(); 这样在每次请求的时候 会自动创建CoreRepository对象 当请求完毕后 就CloseSession() 在程序中通过HttpContext Current Items[ CoreRepository ]就能获取CoreRepository对象了 这样也就变相的管理了NHibernate中的Session 也就达到了 session per request 的这种模式 详细的讲解 通过实现IHttpModule初始化Nhibernate的Session 这种方式比上面的那个每次操作都需要创建Session 性能和速度应该提高了不少 接着我就想 每个请求都创建Session 是不是我们可以象创建Connection Pool一样 也创建一个Session Pool 这样就每次请求的时候不是直接创建Session 而是在我们的Session Pool中拿已经创建好的Session 这样效率不是更好?! cha138/Article/program/net/201311/12369相关参考
ASP.NET中GUID 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! GUID(Globalu
在ASP.NET中动态生成图形 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NET有一个很灵巧
ASP.NET中App 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Bin文件夹 Bin文件夹包
ASP.NET中DataTable对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DataT
ASP.NET中在线用户统计 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 统计在线用户的作用不
小技巧:ASP.NET中编程杀死进程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 通过ASPN
Asp.Net中使用水晶报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下内容为程序代码:
ASP.NET中异常处理使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 通用语言运行时(CL
浅析ASP.NET编程中十大技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在本篇文件中我们
ASP.NET中如何使用匿名函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 尝试从缓存中获取