Java访问SQL数据库的优化探讨.docVIP

  • 10
  • 0
  • 约3.1千字
  • 约 5页
  • 2016-11-22 发布于北京
  • 举报
Java访问SQL数据库的优化探讨.doc

Java访问SQL数据库的优化探讨   【摘要】本文概括了Java连接数据库的主要方法,并对JDBC的特点进行了分析。进而从提高访问数据库效率的角度,论述了采用数据库连接池技术、优化SQL语句格式和多线程方法等可提高Java访问数据库效率的方法。   【关键词】Java;数据库访问;优化   1.概述   在软件开发中通常都会涉及到数据库的应用。而数据库的连接则是数据库应用的基础性工作。在当前主流的编程语言中,Java语言因为其不依赖系统平台、健壮、安全,一次编写便可各处运行的特色,使之成为一种应用越来越广泛的编程语言。在应用Java技术访问数据库时,需要利用Java的数据库访问技术来实现。在Java中实现对数据库的访问时是以JDBC为基础的,而JDBC则是由Java语言所编写的一系列的类和接口组成,通过JDBC能够非常方便的连接任意类型的数据库。   2.JDBC特点分析   Java中的JDBC接口有两个,一个是位于底层的JDBC Driver API,另一个是用于面向程序员的应用程序接口,即Application Programing Interface。其中JDBC Driver API有四种类型:一是JDBC-ODBC桥形式、二是部分Java驱动程序和本机API的组合形式、三是面向数据库中间件的纯Java驱动程序、四是采用直接面向数据库的纯Java驱动程序。上述四类形式中,JDBC-ODBC桥需要在客户端安装必要的ODBC驱动程序,否则无法读取ODBC数据源。这也是这类方式的主要缺点。采用部分Java驱动程序和本机API的组合形式时,要求在客户端使用本地代码来实现对数据库客户端的API调用,从而将JDBC API转化成商用数据库提供的API来完成数据库的数据的提取和存储。第三种方式不必考虑Java程序的细节,因这些程序细节在中间件服务器中是背隐藏了的,因此利用这一特点可以用相同的代码来访问不同的数据库。这也是这一访问方式最大的优点。第四种方式则最为直接,不论是客户端的请求还是程序的执行结果都直接在服务器上直接处理,采用该方式无需像前面两种方法那样需要安装驱动程序或中介软件,这也是这种应用方式的主要优点。   而JDBC API则相对更为的固定,也有四种主要的类型,即:java.sql.DriverManage、java.sql.Connection、java.sql.Statement和java.sql.ResultSet。这四种类型分别执行不同的任务,且分工明确,因此再次不多做论述。   以上不同的连接方式和方法在针对不同类型的数据库时效率会存在一定的差异,随着数据库规模的加大,传统的数据库访问方式已经体现出弊端,在本文中将在介绍可提高Java访问SQL数据库效率运行效率的方法。   3.采用数据库连接池技术   数据库连接池技术是在JDBC2.0基础上提出并逐步完善的。其特点是通过重用一组连接对象,使所有用户之间共享一组己经打开的连接,节省了建立和释放数据库连接的时间,从而大幅度的提高Java对数据库的访问性能。   数据库连接池技术的基本原理是预先设计一个“缓冲池”,将各类资源放于该“缓冲池”中,主要是在“缓冲池”中预先存入一定的数据连接,在程序运行时再根据需要来从“缓冲池”中取出各连接中的一个,在对该连接的操作完成后将其重新放回“缓冲池”中。此时对各连接的管理都由“缓冲池”来负责管理。通过连接池的方式,能够将很多工作都在“缓冲池”的范围内完成,并可通过对连接的控制和管理机制来提高运行效率。   在使用连接池技术时的关键问题是如何建立连接池以及对连接池中的各类连接的有效管理,这两部分内容也是研究连接池技术时的重要方向。一般而言,在建立连接池时,应在系统的初始化阶段通过读取XML文件中的特定配置参数来完成,从而可在内存中建立对于应用程序来讲是唯一的且配置参数也是确定的静态连接池。当完成连接池的建立后,需其保持稳定性,从而让其他线程能够在连接池中获取所需的连接。这种稳定性能够避免建立连接和关闭连接时的内存开销,从而提高内存的使用效率。   在建立起连接池后,更为重要的是对连接的有效管理,如果连接池中的连接管理混乱,反而会适得其反。不同的管理方式的处理效率有一定差异,在针对特定的问题时应当考虑设计出最佳的管理方式,因此连接池的分配和释放并没有所谓的最佳方法,在实践中,“Reference Counting”是一种是用较多的方式。   4.优化SQL语句格式   在利用Java访问数据库时,SQL语句的格式也会对访问效率造成影响。在实际应用中,常采用Statement对象来执行SQL语句。这种方式意味着每次都需要对数据库进行解析编译。这无疑会降低对数据库的访问效率。如果采用PreP

文档评论(0)

1亿VIP精品文档

相关文档