`

关于Web应用程序数据库连接的使用

阅读更多
之前的Post掀起掀然大波,砸砖者纷至沓来好不热闹。之前的Post观点不够明确,准确,先say sorry,重新整理思路后再分别说明

观点:对于一个WebApplication,提高整体吞吐能力,应该从提高单页的响应能力开始,对于WebApplication使用上的一个原子操作:打开一个页面而言,在整个页面的生存周期中打开的数据连接数量越少,开闭的次数越少效率自然越高。

约束:页面默认是同步的操作,我们在这里约定再不采用异步操作的时候,如果用异步操作优化,那么又是另外的问题了,会有其他的问题产生,比如当两次操作有前因后果的关系的时候。

首先就是关于数据库联接的问题,我这里用数据库联接而不用Connection就是为了滴水不漏,省得错把关公当秦琼把数据库连接和.NET的XXConnection对象混淆起来。
这里用代码来说明,为了保证观点的中性,我将使用NHibernate的实现来做例子。
这里暂时委屈一下NHibernate暂时这样子来用。
我们这里面临两个问题数据库连接的访在那里对象放在那里,其二就是如何使用,如果按照一些人的观点就是随需开,在需要的时候打开。比如

ISession vSession= mCfg.BuildSessionFactory().OpenSession();//创建会话工厂, 一般来说应该使用一个单例对象来封装会话工厂.

              ITransaction vTransaction 
= vSession.BeginTransaction();//创建事物处理

              
try

              
{

                   vSession.Save(vEntity);
//向数据库添加数据

                   vTransaction.Commit();

                   Labmessage.Text
="OK";

              }


              
catch(Exception ex)

              
{

                   vTransaction.Rollback();

                   Labmessage.Text
="Error"+ex.ToString();

              }


              
finally

              
{

                   vSession.Close();

              }



这段代码来自http://www.cnblogs.com/surprise/archive/2004/10/13/51701.aspx 

一般我们会将这段代码放进一个处理业务逻辑的对象。里面,当需要添加一个Entity的时候调用,当然Entity有更多的用法,不过我们在这里就对这样子的简单的来做第一个例子。

那么如果我们针对这一个简单实体封装了一个逻辑:添加XX(用户信息、Post)等,当我们需要在一个页面操作多个的时候,就会有一个问题,一个是事务,这里我们暂且跳开不管,然后的情况就是在这个页面频繁的关闭打开了多次数据库。

这个时候我所提出的一个页面一个Connection的方式就是指的,将:
ISession vSession= mCfg.BuildSessionFactory().OpenSession();//创建会话工厂, 一般来说应该使用一个单例对象来封装会话工厂.

              ITransaction vTransaction 
= vSession.BeginTransaction();//创建事物处理

              
try

              
{

                业务逻辑对象.操作(vSession)
                   vTransaction.Commit();

                   Labmessage.Text
="OK";

              }


              
catch(Exception ex)

              
{

                   vTransaction.Rollback();

                   Labmessage.Text
="Error"+ex.ToString();

              }


              
finally

              
{

                   vSession.Close();

              }



这样子的代码写在页面上。

so,就是这个样子了,在业务逻辑里将操作做完了,以后不需要做数据库操作的时候就将数据库连接关闭,事务提交。
我不知道很多人是怎么理解的。

就写到这里,等大虾来拍砖,还有就是这样子的代码如果存在线程问题的话。那么是不是应该对page_load方法这样子的方法都要处理线程安全问题了?效率的问题不知道是频繁关闭打开数据库来的有效率?一个建议,如果不在乎这点开销的话也无所谓,如果为了结构上的清晰而让步,这点我不反对,但是这个指标绝对是在优化效率的时候应该考虑到的
很多人在上一片post里说这样子做要我会死得很难看,我就不明白了,还有其他不死的很难看的方法?

之前Post的连接http://www.cnblogs.com/Alexander-Lee/archive/2007/03/31/694847.html
分享到:
评论

相关推荐

    Web与数据库连接工具形成与设计分析

    通过Web与数据库连接工具的应用,能够将数据库中的数据非常容易的发布到Web浏览器上,这样用户就不再依靠数据库应用程序来对数据库内容进行各种操作了,主要包括增加、修改、查询和删除等等,使用户能够使用Web浏览器...

    基于JAVA JSP数据库连接池的研究与实现的毕业设计,使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据

    使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在...

    基于Java mvc的web应用程序项目数据库连接到登录和登录操作

    基于Java mvc的web应用程序项目,涉及jsp、Java、servlet、DAO、mysql数据库连接到登录和登录操作.zip

    was6.1_上部署Web应用程序详解(图)

    was6.1 上部署Web应用程序详解(图) 1、 数据库连接池配置 通过WebSphere配置数据库连接池一共需要三项: 1.配置连接驱动,在这里叫:JDBC提供程序; 2.配置数据库连接池,在这里叫:配置数据源; 3.配置数据库登录帐号...

    一种基于JSP数据库连接池的研究与实现(含jsp源码和文章说明和数据库).rar

    使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在...

    JSP数据库连接池的研究与实现(源代码+LW).zip

    使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在...

    基于JSP毕业设计-数据库连接池的研究与实现(源代码+论文).zip

    使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在...

    Java Web应用开发 31 课堂案例-使用专用JDBC驱动程序连接数据库.docx

    Java Web应用开发 31 课堂案例-使用专用JDBC驱动程序连接数据库.docx 学习资料 复习资料 教学资源

    JSP一个完整的数据库应用程序

    一个完整的数据库应用程序首页是Main.jsp.该程序适合初学jsp的朋友的练习!但是对初学者绝对好用.应用平台是:Jdk+Tomcat 将SaleBook放在存放jsp文件的位置.如果你没有改过路径,那么默认路径应该是Tomcat/webapps/...

    数据库连接池原理

    在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库...

    介绍Java和OOP的Web应用程序Introduction to Java and OOP for Web Applications

    这本书是您使用JSP开发基于Java的动态Web应用程序,使用JSF连接到数据库以及使用世界上最受欢迎的开源Java Web服务器Apache Tomcat将它们付诸实践所需要的。

    在Flash中实现与数据库的连接 (1)

    实现Web数据库的应用一般有两种方法:一种是Web服务器端提供中间件,连接Web服务器与数据库服务器;另一种是把应用程序下载到客户端直接访问数据库。最常用的中间件技术有通用网关接口(CGI)和应用程序编程接口(API)...

    Web应用安全:web数据库访问技术.pptx

    ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大...

    JSP数据库连接池的研究与实现(源代码+论文).rar

    JSP数据库连接池的研究与实现(源代码+论文).rar是一个针对Java Server Pages (JSP) 技术开发者的宝贵资源包,它旨在通过提供一套完整的解决方案来优化Web应用程序中的数据库连接管理。在动态网站和应用程序中,...

    Android数据库应用编程——为企业开发数据驱动Android应用

    Android数据库应用编程——为企业开发数据驱动Android应用 透彻讲述如何使用内容提供器共享数据、使用适配器显示数据以及使用Web服务传输数据,介绍集成应用程序和现有企业系统、保护数据以及同步数据的方法。...

    数据库应用程序实用攻略

    SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据...

    JDBC 数据库连接池

     当数据库连接量小的时候这样做并无不妥,但若在访问量大的时候显得低效了,如某网站访问量在1000万次,那么在这web应用程序与数据库要进行等量的连接和断开操作。  为了解决这个问题,引入了数据库连接池技术...

    Java_jdbc数据库连接池总结.doc

    但使用这种模式进行Web应用  程序开发,存在很多问题:首先,每一次Web请求都要建立一次数据库连接。建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。这个时间对于一次或几次...

    数据源和连接池

    在实际项目的开发中,特别是web应用程序中,如Jsp,Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据方请求必须建立连接,存取数据,关闭连接等步骤,而数据库连接是一种非常昂贵的资源,频繁的建立连接,...

Global site tag (gtag.js) - Google Analytics