论文部分内容阅读
摘要:访问数据库是Java应用的重要环节。通过选择合适的驱动程序、采用连接池技术、优化SQL语句以及优化数据库可以提高Java访问SQL数据库的效率。
关键词:Java;SQL数据库;优化;JDBC
中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2012) 21-0000-02
随着Java技术的不断成熟,Java在电子平台中的应用越来越广泛。而数据库存储着大量数据,访问数据库的效率非常重要。任何语言想要访问数据库,必须与数据库建立连接。Java语言通过JDBC访问数据库,JDBC是用于执行SQL语句的Java Api。JDBC可以与数据库建立连接,发送SQL语句,还可以处理数据库返回的结果。
1 选择合适的驱动程序
1.1 JDBC-ODBC网桥驱动程序
JDBC-ODBC网桥驱动程序[1]的特点是将JDBC操作转换成ODBC操作。首先在本地计算机上安装ODBC驱动程序,然后通过JDBC-ODBC网桥,将Java程序中的JDBC访问指令转换为ODBC访问指令,接着通过ODBC驱动程序完成数据库的访问。
1.2 JDBC-Native驱动程序
JDBC-Native驱动程序的特点是将JDBC程序编程接口转换为本地的程序编程接口。JDBC-Native驱动程序也需要在本地计算上安装好特定的驱动程序。
1.3 纯Java的JDBC中间件驱动程序
纯Java的JDBC中间件驱动程序不需要在本地计算机上安装特定的驱动程序,但是需要安装数据库管理系统服务器的中间件,服务器的中间件可以支持多种数据库的访问,还可以负责数据库的转换。首先将JDBC访问转换成网络标准协议,接着由服务器端的中间件转换为专用的访问指令。
1.4 纯Java的JDBC驱动程序
纯Java的JDBC中间件驱动程序也不需要在本地计算机上安装特定的驱动程序,由JDBC驱动完成所有的数据库操作。由数据库厂商提供这一类的驱动程序,将JDBC调用转换为数据专用的访问指令,效率非常高。
JDBC-ODBC网桥驱动程序要求客户端必须安装ODBC驱动程序,不适合基于网络的应用,而且执行效率低,也不适合大数据量存取的应用;JDBC-Native驱动程序结合其他三种驱动程序的特点,可以利用本地代码库加速数据库的访问,而且支持多数据库,与数据库紧密结合,扩展数据库的性能;纯Java的JDBC驱动程序支持多数据库,具有灵活的特点;纯Java的JDBC驱动程序和本机数据库紧密结合,是可靠有效的驱动程序,也是企业的首选软件。根据不同情况,采用不同的驱动程序,可以提高访问数据库的效率。
2 采用连接池技术
Java访问数据库的时候,需要同时访问多个不同的数据库。数据库连接是有限资源,一旦某一程序耗尽数据库资源,那么就会影响其他的应用程序。采用连接池技术,使用同一个连接池,访问不同的数据库,可以有效地节约资源,提高数据库的访问效率。
连接池[2]的核心是连接复用。建立一个数据库连接池,负责数据库连接的分配和管理,允许不同的应用程序共享现有的数据库连接,避免数据库的频繁建立和关闭,使连接池中的连接得到高校的复用。更重要的是通过监视数据库连接的使用情况,可以及时对系统的开发和性能进行调整。
通过使用空闲池可以实现对连接的管理,也就是按照时间将那些已经创建却没有分配的连接存放到空闲池[3]中。当用户请求一个连接的时候,系统首先检查空闲池内的空闲连接。如果空闲池内存在空闲连接,那么就把创建时间最长的那个连接分配出去;如果空闲池内没有空闲连接,那么就检查当前的连接池是否允许连接,如果允许,就等待一定时间,如果不允许,就重新建立一个连接,如果等待的时间内连接池内有连接释放出来,那么就将其分配给用户,如果等待时间超过预定时间,还没有连接释放出来,那么就重新返回。
在多层结构的应用程序中,使用连接池技术,可以提高系统的性能。
3 优化SQL数据库
3.1 使用数据库存储过程
数据库的存储过程[4]主要是为了完成一组具有特定功能的SQL语句集[5],经过编译之后就可以存储到数据库中。当创建存储过程之后,就可以多次调用,比SQL语句的执行快很多。
3.2 创建PrepareStatemennt对象
首先,我们来看两个程序片段:
Code Fragment 1:
String updateString=“UPDATE chengji SET grade=25”+“WHERE Sno LIKE ‘9500%’”;
stmt.exeeuteUpdate(updateString);
Code Fragment 2:
PreparedStatement updateSales=con.prepareStatement(“UPDATE Sno SET grade=? WHERE grade LIKE?”);
updateSales.setInt(1,25);
updateSales.setStfing(2,“9500%”);
updateSales.executeupdateO;
程序片段一是普通的Statement对象,而程序片段二则是PrepareStatemennt对象,PrepareStatemennt对象包含了SQL语句,一般情况下,这个SQL语句已经被预编译过,当执行的时候,只需要运行SQL语句就可以了。如果多次执行Statement对象,就会降低PrepareStatemennt对象的运行时间,加快数据库的访问速度,此时只需要改变其中的变量值,就可以执行SQL语句了。是否选择PrepareStatemennt对象,在于SQL语句是否已经多次执行,而且两次执行的差别只是变量的不同。如果SQL语句执行了多次,那么就可以体现PrepareStatemennt对象预编译的优越性,如果SQL语句只执行了一次,那么PrepareStatemennt对象就和Statemennt对象没有任何差别。因此,多次执行Statemennt对象,可以创建为PrepareStatemennt对象,提高效率。
3.3 仅选取所需要的行、列
当执行SQL查询[6]的时候,会获得符合条件的所有记录。此时,可以通过tatement的setFetchSize()方法设置数据缓存。以增量的方式获取记录集,从而获得自己所需要的记录。当发送SQL查询语句的时候,不需要选取数据中的全部列,选取单独的列就可以减少服务器发送和取出的数据量,提高系统的性能。
4 结束语
优化Java访问SQL数据库的效率,应该从优化数据库的连接开始,选择合适的驱动程序,采用连接池技术,并且优化数据库。在实际应用中,根据实际开发情况,可以研制出更好的优化策略,更好地提高数据库访问效率。另外,提高数据访问效率还可以改善系统硬件设备,采用硬件软件结合的方式,提高Java访问数据库的效率。
参考文献
[1]王长杰,王卫华.Java访问数据库的效率优化研究[J].科技信息,2010(34):246-247.
[2]陈舒骅,刘俊.基于JDBC的数据库访问优化策略研究[J].电脑编程技巧与维护,2011(10):102-103.
[3]车玉生,鞠红.浅谈JDBC连接数据库经验技巧[J].中国科技财富,2011(6):79-80.
[4]岐世峰.JDBC访问数据库的优化建议[J].现代计算机(专业版),2009(11):121-122.
[5]张达敏,陈言君.优化J2EE代码编写提高软件性能[J],贵州科学,2009,27(2):89-90.
[6]张洋.JDBC数据库访问技术[J].电脑编程技巧与维护,2009(22):57-58.
[作者简介]衣李娜(1974.2-),女,汉族,辽宁省本溪市,职称:讲师,学位:硕士,研究方向为程序设计。
关键词:Java;SQL数据库;优化;JDBC
中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2012) 21-0000-02
随着Java技术的不断成熟,Java在电子平台中的应用越来越广泛。而数据库存储着大量数据,访问数据库的效率非常重要。任何语言想要访问数据库,必须与数据库建立连接。Java语言通过JDBC访问数据库,JDBC是用于执行SQL语句的Java Api。JDBC可以与数据库建立连接,发送SQL语句,还可以处理数据库返回的结果。
1 选择合适的驱动程序
1.1 JDBC-ODBC网桥驱动程序
JDBC-ODBC网桥驱动程序[1]的特点是将JDBC操作转换成ODBC操作。首先在本地计算机上安装ODBC驱动程序,然后通过JDBC-ODBC网桥,将Java程序中的JDBC访问指令转换为ODBC访问指令,接着通过ODBC驱动程序完成数据库的访问。
1.2 JDBC-Native驱动程序
JDBC-Native驱动程序的特点是将JDBC程序编程接口转换为本地的程序编程接口。JDBC-Native驱动程序也需要在本地计算上安装好特定的驱动程序。
1.3 纯Java的JDBC中间件驱动程序
纯Java的JDBC中间件驱动程序不需要在本地计算机上安装特定的驱动程序,但是需要安装数据库管理系统服务器的中间件,服务器的中间件可以支持多种数据库的访问,还可以负责数据库的转换。首先将JDBC访问转换成网络标准协议,接着由服务器端的中间件转换为专用的访问指令。
1.4 纯Java的JDBC驱动程序
纯Java的JDBC中间件驱动程序也不需要在本地计算机上安装特定的驱动程序,由JDBC驱动完成所有的数据库操作。由数据库厂商提供这一类的驱动程序,将JDBC调用转换为数据专用的访问指令,效率非常高。
JDBC-ODBC网桥驱动程序要求客户端必须安装ODBC驱动程序,不适合基于网络的应用,而且执行效率低,也不适合大数据量存取的应用;JDBC-Native驱动程序结合其他三种驱动程序的特点,可以利用本地代码库加速数据库的访问,而且支持多数据库,与数据库紧密结合,扩展数据库的性能;纯Java的JDBC驱动程序支持多数据库,具有灵活的特点;纯Java的JDBC驱动程序和本机数据库紧密结合,是可靠有效的驱动程序,也是企业的首选软件。根据不同情况,采用不同的驱动程序,可以提高访问数据库的效率。
2 采用连接池技术
Java访问数据库的时候,需要同时访问多个不同的数据库。数据库连接是有限资源,一旦某一程序耗尽数据库资源,那么就会影响其他的应用程序。采用连接池技术,使用同一个连接池,访问不同的数据库,可以有效地节约资源,提高数据库的访问效率。
连接池[2]的核心是连接复用。建立一个数据库连接池,负责数据库连接的分配和管理,允许不同的应用程序共享现有的数据库连接,避免数据库的频繁建立和关闭,使连接池中的连接得到高校的复用。更重要的是通过监视数据库连接的使用情况,可以及时对系统的开发和性能进行调整。
通过使用空闲池可以实现对连接的管理,也就是按照时间将那些已经创建却没有分配的连接存放到空闲池[3]中。当用户请求一个连接的时候,系统首先检查空闲池内的空闲连接。如果空闲池内存在空闲连接,那么就把创建时间最长的那个连接分配出去;如果空闲池内没有空闲连接,那么就检查当前的连接池是否允许连接,如果允许,就等待一定时间,如果不允许,就重新建立一个连接,如果等待的时间内连接池内有连接释放出来,那么就将其分配给用户,如果等待时间超过预定时间,还没有连接释放出来,那么就重新返回。
在多层结构的应用程序中,使用连接池技术,可以提高系统的性能。
3 优化SQL数据库
3.1 使用数据库存储过程
数据库的存储过程[4]主要是为了完成一组具有特定功能的SQL语句集[5],经过编译之后就可以存储到数据库中。当创建存储过程之后,就可以多次调用,比SQL语句的执行快很多。
3.2 创建PrepareStatemennt对象
首先,我们来看两个程序片段:
Code Fragment 1:
String updateString=“UPDATE chengji SET grade=25”+“WHERE Sno LIKE ‘9500%’”;
stmt.exeeuteUpdate(updateString);
Code Fragment 2:
PreparedStatement updateSales=con.prepareStatement(“UPDATE Sno SET grade=? WHERE grade LIKE?”);
updateSales.setInt(1,25);
updateSales.setStfing(2,“9500%”);
updateSales.executeupdateO;
程序片段一是普通的Statement对象,而程序片段二则是PrepareStatemennt对象,PrepareStatemennt对象包含了SQL语句,一般情况下,这个SQL语句已经被预编译过,当执行的时候,只需要运行SQL语句就可以了。如果多次执行Statement对象,就会降低PrepareStatemennt对象的运行时间,加快数据库的访问速度,此时只需要改变其中的变量值,就可以执行SQL语句了。是否选择PrepareStatemennt对象,在于SQL语句是否已经多次执行,而且两次执行的差别只是变量的不同。如果SQL语句执行了多次,那么就可以体现PrepareStatemennt对象预编译的优越性,如果SQL语句只执行了一次,那么PrepareStatemennt对象就和Statemennt对象没有任何差别。因此,多次执行Statemennt对象,可以创建为PrepareStatemennt对象,提高效率。
3.3 仅选取所需要的行、列
当执行SQL查询[6]的时候,会获得符合条件的所有记录。此时,可以通过tatement的setFetchSize()方法设置数据缓存。以增量的方式获取记录集,从而获得自己所需要的记录。当发送SQL查询语句的时候,不需要选取数据中的全部列,选取单独的列就可以减少服务器发送和取出的数据量,提高系统的性能。
4 结束语
优化Java访问SQL数据库的效率,应该从优化数据库的连接开始,选择合适的驱动程序,采用连接池技术,并且优化数据库。在实际应用中,根据实际开发情况,可以研制出更好的优化策略,更好地提高数据库访问效率。另外,提高数据访问效率还可以改善系统硬件设备,采用硬件软件结合的方式,提高Java访问数据库的效率。
参考文献
[1]王长杰,王卫华.Java访问数据库的效率优化研究[J].科技信息,2010(34):246-247.
[2]陈舒骅,刘俊.基于JDBC的数据库访问优化策略研究[J].电脑编程技巧与维护,2011(10):102-103.
[3]车玉生,鞠红.浅谈JDBC连接数据库经验技巧[J].中国科技财富,2011(6):79-80.
[4]岐世峰.JDBC访问数据库的优化建议[J].现代计算机(专业版),2009(11):121-122.
[5]张达敏,陈言君.优化J2EE代码编写提高软件性能[J],贵州科学,2009,27(2):89-90.
[6]张洋.JDBC数据库访问技术[J].电脑编程技巧与维护,2009(22):57-58.
[作者简介]衣李娜(1974.2-),女,汉族,辽宁省本溪市,职称:讲师,学位:硕士,研究方向为程序设计。