基于JDBC的Web数据库应用程序性能优化研究(1)
2015-08-07 01:07
导读:计算机应用论文论文,基于JDBC的Web数据库应用程序性能优化研究(1)应该怎么写,有什么格式要求,科教论文网提供的这篇文章是一个很好的范例:
摘 要 在Web应用程序设计中,提升数据库的响应性能是改善应用
摘 要 在Web应用程序设计中,提升数据库的响应性能是改善应用性能的关键。基于JDBC的Web数据库应用中,使用JDBC的优化技术,改善数据模型,可提高Web应用程序的响应性能。 关键词 JDBC;Web数据库;连接池;事务1 引言 随着Internet的广泛应用,由于B/S结构所拥有的投资维护成本低、客户端部署简单等特点。目前,Web应用程序正在以非常快的速度在增长,Web应用程序不再是简单显示信息的网站,而逐渐融合核心的业务逻辑,成为IT领域的业务处理平台。Java以其面向对象、跨平台、安全性、健壮性等优秀特性已成为开发Web应用的主要选择。JDBC为基于Java平台的Web应用程序完成数据库操作提供了完备的方法接口。基于JDBC的Web数据库应用程序的结构如图1所示。因Web数据库接受来自众多并发的客户端所发出的SQL操作,特别是在企业级应用中, Web应用程序需要尽可能快的执行SQL操作并返回结果,所以需要进一步优化数据库的访问性能。

图1 基于JDBC的Web数据库应用程序的结构2 JDBC的结构和应用模式 JDBC是一种可用于执行SQL语句的Java API,由一些Java语言编写的类和接口组成。JDBC为数据库应用开发人员、数据库前台开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用。通过使用JDBC,开发人员可以很方便的将SQL语句传送给几乎任何一种数据库,有很好的可移植性。JDBC的结构和工作过程如图2。用JDBC进行数据库访问的操作步骤:①引入java.sql与javax.sql软件包;②装载JDBC驱动库;③用Connection接口建立一个到数据库的连接对象;④通过SQL语句建立一个Statement对象;⑤通过Statement执行数据库操作;⑥获取数据库数据或更新数据库数据;⑦关闭结果集对象ResultSet、Statement对象与Connection对象。

图2 JDBC的结构和工作过程 JDBC驱动器可以分为下面四种:①桥式驱动器,这种驱动器程序使用桥技术将Java应用程序与一个ODBC数据库连接。这种驱动器先将JDBC转化为ODBC驱动,应用程序依赖后者与数据库通信。桥式驱动器用本地代码实现,且必须安装ODBC管理器和配置ODBC驱动。一般不建议使用。②Native-API半Java驱动器,它通过native C语言库将JDBC调用转换成对数据库的客户API的调用,从而实现与数据库的通信。这种驱动一部分用Java语言编写,另一部分用native代码实现,因而性能相对比纯Java实现的驱动器要高,但在使用时,必须安装一些与平台有关的代码。③Net-Protocal全Java驱动器,它通过网络协议与中间层连接,而中间层可使用任何一种驱动来存取数据库。适应性好,使用方便灵活。④Native-Protocol全Java驱动器,这类驱动器将JDBC请求转化为与数据库相关的网络协议,不用借助任何其他帮助而直接对数据库进行存取。Net-Protocal全Java驱动器与Native-Protocol全Java驱动器运算速度较快,性能比较好。Net-Protocal全Java驱动器可以借助于应用服务器所提供连接池技术、缓冲技术、负载均衡技术等,获得较高的性能,适合于Web应用的开发。3 优化Statement、ResultSet对象 与Connection对象一样,Statement对象是JDBC程序设计中非常重要的对象。它包含了SQL语句的查询和更新操作。它是操作数据库数据的载体,在对数据库的操作中,起着重要的作用。ResultSet对象是执行SQL语句后产生的结果集,通常是数据库的查询结果。其信息的形式可以认为是一张由行和列组成的二维数据表。通过对该结果集的操作,就可以获取各项数据。3.1 选择正确的Statement对象并及时关闭 在JDBC技术规范中,共有3种不同类型的Statement对象。它们分别是:Statement、PreparedStatement和CallableStatement。 Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句,由于PreparedStatement对象已经预编译过,所以起执行速度要快于Statement对象。因此,多次执行的SQL语句经常创建为PreparedStatement对象,可以提高数据库的总体效率;CallableStatement对象用于执行数据库已经存储的调用,存储过程是由SQL语句和流控制语句书写的过程程序,这个程序经数据库编译和优化后存储在数据库服务器中,充分利用存储过程来完成应用系统的逻辑操作处理可以提高系统的运行性能和可维护性。3.2 采用合适的方法操作ResultSet对象 结果集读取数据的方法主要是getXXX(),其参数可以使用整型表示第几列,也可以是列名。返回的是对应的XXX的类型的值。使用getString()可以返回所有列的值,不过返回的都是字符串类型的。还可以通过使用getAsciiStream()获得该列对应的当前行的ascii流。但如果使用的方法与实际的数据域的类型不匹配,那么系统要将相应的字段数据进行类型转换,尤其是在查询返回巨大数据的时候,将会扩大系统开销,降低应用性能,对应用性能产生很大的影响。因此应尽量使用与数据域类型相匹配的方法获取所应用的数据域中的数据。4 合理使用JDBC的数据库事务操作 合理使用事务功能促进数据访问的并发性。为了保证Web环境下多用户协调地访问数据,应注意根据情况使用锁定管理。JDBC的数据库操作中,一项事务是由一条或是多条表达式所组成的一个不可分割的工作单元。通过提交commit( )或者回滚rollback( )来结束事务的操作。在JDBC中,事务操作默认是自动提交的。也就是说,一条对数据库的更新表达式代表一项事务操作,操作完成后,系统将自动调用commit( )来提交,否则将调用rollback( )来回滚。可以通过调用setAutoCommit(false)来禁止自动提交,之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit( )进行整体提交,如果其中一个表达式操作失败,则不会执行到commit( ),并且将产生响应异共2页: 1 [2] 下一页 论文出处(作者):