jdbc程序的性能主要由两个因素决定,一是数据库本身的性质,另一个是与数据库相对独立的jdbc应用程序接口(api)的使用。这里说的是如何正确使用jdbc编程接口,以获得更好的性能。
jdbc主要优化有:
1.选择正确的jdbc驱动程序
2.Connention的优化:使用连接池来管理Connection对象
3.Statement的优化:使用批量更新等
4.Result的优化:正确的从数据库中get数据等
(1)选择正确的jdbc驱动程序:
1、jdbc-odbc 桥
2、本地api-部分 java驱动
3、jdbc网路协议-纯java驱动
4、jdbc本地协议
最好选择jdbc网路协议-纯java驱动,效率比较高,但需要第三方软件的支持。比如corba、 weblogic属于这种类型
(2)优化Connection对象:
1、设置适当的参数
DriverManager.getConnection(String url,Properties props);
例如:
Properties props=new Properties();
props.put("user","wuwei");
props.put("password","wuwei");
props.put("defaultRowPrefectch","30");
props.put("dufaultBatchValue","5");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@hostsString",props);
对象可以通过设置setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 两个参数类优化连接
2、使用连接池
可以自己写一个连接池,这样程序的灵活性强,便于移植。
apache项目开发了一套非常通用而表现非常稳定的对象池 http://jakarta.apache.org/commons/pool.htm
设计了自己的连接池后,在客户端调用建立对象:
public Object makeObject() throws Exception{
Class.forName("oracle.jdbc.driver.OracalDriver");
return DriverManager.getConnection("url","username","password");
}
销毁对象时用:
public void destroyObject(Object obj) throws Exception{
((Connection)obj.close());
}
注意几点:对象池里有没有回收机制,对象池里有机有容量限制,对象池里有多少个闲置对象(可以释放)
3、控制事务的提交
最好手动提交事务,不但可以可以保证数据原子性,而且对新能提高留下余地。
try{
connection.setAutoCommint(false);
// 代码用PreparedStatement性能比Statementh好
connection.commit();
connection.setAutoCommit(true);
}catch(SQLException e){
}finally{
//代码
if(connection!=null){
connection.close();
}
}
4、适当的选择事务的隔离级别
TRANSACTION_READ_UNCOMMITED 性能最高
TRANSACTION_READ_COMMITED 快
TRANSACTION_REFEATABLE_READ 中等
RANSACTION_SERIALIZABLE 慢
(3)Statement 优化:
jdbc3个接口用来处理sql的执行,是Statement PreparedStatement CallableStatement提供适当的Statement接口批量执行sql从数据库批量获取数据。
PreparedStatement 比Statement性能要好 主要体现在一个sql语句多次重复执行的情况。
PreparedStatemnt只编译解析一次而Statement每次编译一次。
批量修改数据库
Statement 提供方法addBatch(String)和executeBatch()
调用方法为
stmt.addBatch("isnert.....");
stmt.addBatch("update.....");
stmt.executeBatch();
也可以用PreparedStatement从而更好的提高性能:
pstmt=conn.preparedStatement("insert into test_table(......) values(....?)");
pstmt.setString(1,"aaa");
pstmt.addBatch();
pstmt.setString(1,"bbb");
pstmt.addBatch();
.....
pstmt.executeBatch();
批量地从数据库中取数据:
通过setFetchSize()和getFectchSize()方法来设定和查看这个参数,这个参数对体统的性能影响比较大。这个参数太小会严重地降低程序的性能。
Connection Statement ResultSet都有这个参数,他们对性能地影响顺序是:ResultSet---Statement---Connection
(4)优化ResultSet:
体现在以下几个方面:
批量读取数据.合理设置ResultSet的getFetchSize()和setFetchSize()方法中的参数
使用正确的get和set方法
使用整数而不是字段名作为参数性能比较高
例如:
setInt(1,100);
setString(2,"aaaa");
比
setInt("id","100");
setString("name","aaaa");
性能好
设置适当的滚动方向。有3个方向FETCH_FORWORD,FETCH_REVERSE FETCH_UNKNOWN,单向滚动性能比较高。
其他方面的性能优化
及时显示的关闭Connection Statement ResultSet,其中Connection可以用Connetion Pool处理。
使用数据库系统的强大查询功能去组织数据。这样程序运行是和数据库服务的交互次数少,数据库返回给程序的记录条数少的多,所以性能有很大的提高。
分享到:
相关推荐
### JDBC性能优化详解 #### 一、引言 在当今数据密集型的应用环境中,Java数据库连接(JDBC)作为Java应用程序与数据库之间的重要...希望本文能够为那些正在努力提高JDBC应用程序性能的开发者们提供有价值的参考。
Oracle JDBC驱动程序是Java应用程序与Oracle数据库之间通信的桥梁,使得开发者可以利用Java语言执行SQL语句和处理数据库数据。标题中的"10g与9i"指的是Oracle数据库的两个不同版本,即Oracle Database 10g和9i。这些...
"JDBC.rar_JDBC程序_jdbc"这个压缩包提供的示例程序是针对初学者了解和实践JDBC连接MySQL数据库的基础教程。通过学习和理解这个小程序,新手可以掌握如何使用JDBC进行数据库操作,包括加载驱动、建立连接、执行SQL、...
在这个压缩包中,我们得到了Oracle 11g的JDBC驱动程序,它包含了用于连接Oracle数据库的必要组件,以及一些示例程序,帮助开发者更好地理解和使用JDBC。 JDBC驱动程序是Oracle数据库与Java应用程序之间的桥梁,它...
**JDBC程序的核心概念:** 1. **JDBC驱动程序**:Java程序与数据库之间的桥梁,分为四种类型:1)JDBC-ODBC桥接驱动,2)本地API部分二进制驱动,3)网络协议纯Java驱动,4)Java数据库连接(JDBC)应用驱动。 2. ...
SQL Server 2000 JDBC 驱动程序是微软为Java开发者提供的一个数据库连接工具,它允许Java应用程序通过Java Database Connectivity (JDBC) API与SQL Server 2000数据库进行交互。JDBC驱动程序是Java编程语言中的一个...
数据库系统的JDBC驱动程序是Java编程语言中与各种数据库进行交互的重要组成部分。JDBC(Java Database Connectivity)是一种标准API,由Sun Microsystems(现为Oracle公司)开发,它允许Java应用程序连接到不同类型...
JDBC驱动程序是这个框架的关键组成部分,它充当了Java应用程序与数据库之间的桥梁。了解JDBC驱动程序对于任何Java开发者来说都至关重要,尤其是那些需要处理数据库连接的开发者。 首先,JDBC驱动程序分为四种类型:...
而Microsoft Native Driver(也称为SQL Server JDBC驱动)是直接针对SQL Server设计的,性能更优,且不需ODBC驱动程序支持。 安装JDBC驱动通常包括以下几个步骤: 1. 下载:首先,你需要获取适用于SQL Server 2000...
在Java服务器页面(JSP)中使用 JDBC(Java Database Connectivity)驱动程序是连接到数据库并执行SQL操作的关键步骤。JDBC提供了一种标准接口,使得Java应用程序能够与各种类型的数据库进行交互,无论数据库是...
SQLServer JDBC驱动程序是用于Java应用程序与Microsoft SQL Server数据库之间通信的重要组件。它是Java Database Connectivity (JDBC) API的一部分,允许Java开发者通过编写Java代码来访问和操作SQL Server中的数据...
4. **连接池支持**:JDBC驱动可与常见的Java连接池(如C3P0、Apache DBCP、HikariCP等)无缝集成,提升应用程序的性能和资源利用率。 5. **支持大型对象**:JDBC驱动支持BLOB、CLOB和XML等大型数据类型的读写。 6....
JDBC为Java应用程序提供了标准化的方法来访问关系型数据库,无论数据库是Oracle、MySQL、PostgreSQL还是其他任何支持JDBC的数据库。 JDBC的核心组件包括以下几个部分: 1. **Driver Manager**:这是Java应用程序与...
Oracle 9i JDBC驱动程序是Oracle数据库连接Java应用程序的关键组件,它允许Java应用程序通过网络与Oracle数据库进行交互。JDBC(Java Database Connectivity)是Java平台的标准API,用于处理Java应用程序和各种类型...
【标题】"idea jdbc 示例程序" 是一个基于Java集成开发环境IntelliJ IDEA(简称IDEA)的数据库连接示例项目,它展示了如何在IDEA中使用Java Database Connectivity(JDBC)技术进行数据库操作。这个示例适用于Java ...
1. **驱动程序**:JDBC驱动程序是Java应用程序与数据库之间的桥梁。根据不同的数据库和连接方式,JDBC驱动分为四种类型:JDBC-ODBC桥驱动、网络纯Java驱动、二进制兼容驱动和Java数据库连接API驱动。驱动的选择直接...
### JDBC程序访问数据库知识点详解 #### 一、JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供...
1. **JDBC连接池**:JDBC 2.0引入了Connection Pool的概念,允许应用程序重复使用已建立的数据库连接,减少每次连接和断开的开销,提高了整体性能。例如,C3P0、Apache DBCP和HikariCP等都是基于JDBC 2.0连接池实现...