jdbc的优化

jdbc的优化
把经常用的属性,代码全部封装起来,不用每次用的时候都创建,比如 下面这些动作不需要重复创建,只需封装起来即可提高的效率
把属性也封装起来当作配置信息,用时读取配置文件文件即可
package com.bjsxt.util;

/**
* 存储着所有的常量信息
*
* @author Administrator
*
*/
public class SxtConstants {
//数据库的配置信息
public static final String DATABASE_CLASSNAME = "oracle.jdbc.driver.OracleDriver";
public static final String DATABASE_URL = "jdbc:oracle:thin:@192.168.1.253:1521:orcl";
public static final String DATABASE_USER = "scott";
public static final String DATABASE_PASSWORD = "tiger";
}

//获取连接
Connection connection = SxtDBUtil.createConnection();
//获取发送器
Statement statement = SxtDBUtil.createStatment(connection);
//发送SQL语句,获取结果集合
ResultSet resultSet = statement.executeQuery(sql);
//遍历结果集合

完整代码

package com.bjsxt.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
*
* 配置文件必须放在src根目录
*
* @author Administrator
*
*/
public final class SxtDBUtil {

//数据库的配置信息
private static String className = "";
private static String url = "";
private static String user = "";
private static String password = "";

static {
try {
//开始解析配置文件
SAXReader saxReader = new SAXReader();
//以流的方式获取获取配置文件
InputStream inputStream = SxtDBUtil.class.getClassLoader().getResourceAsStream("SxtDBUtil.xml");
//开始解析配置文件
Document document = saxReader.read(inputStream);
//获取根节点
Element rootElement = document.getRootElement();
//获取要选择数据库的类型
String databaseType = rootElement.elementText("database-type");
//判断数据库类型是否为空
if (databaseType != null) {
//遍历出数据库的配置信息
List<Element> elements = rootElement.elements("database");
for (Element element : elements) {
//判断数据库类型是否一致
if (databaseType.equals(element.attributeValue("type"))) {
//获取当前元素所有的子元素
className = element.elementText("className");
url = element.elementText("url");
user = element.elementText("user");
password = element.elementText("password");
}
}
//使用静态代码块加载驱动
Class.forName(className);
} else {
System.err.println("您的配置文件数据库类型【database-type】有误,请重新配置");
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 创建JDBC连接
* @return
*/
public static Connection createConnection() {
return createConnection(true);
}

/**
* 事务手动提交还是自动提交
* @param isAutoCommit
* @return
*/
public static Connection createConnection(boolean autoCommit) {
//声明连接
Connection connection = null;
try {
//获取连接
connection = DriverManager.getConnection(url, user, password);
//手动或者自动提交事务
connection.setAutoCommit(autoCommit);
} catch (SQLException e) {
System.err.println("您的数据库详细配置有误url【" + url + "】user【" + user + "】password【" + password + "】");
e.printStackTrace();
}
//返回连接
return connection;
}

/**
* 获取发送器
* @param connection
* @return
*/
public static Statement createStatment(Connection connection) {
Statement statement = null;
try {
statement = connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return statement;
}

/**
* 获取预处理发送器
* @param connection
* @param sql
* @return
*/
public static PreparedStatement createPreparedStatement(Connection connection, CharSequence sql) {
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql.toString());
} catch (SQLException e) {
e.printStackTrace();
}
return preparedStatement;
}

/**
* 关闭连接
* @param connection
*/
private static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 关闭发送器
* @param statement
*/
private static void closeStatement(Statement statement) {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 关闭结果集
* @param resultSet
*/
private static void closeResultSet(ResultSet resultSet) {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

/**
* 关闭所有的连接
* @param connection
* @param statement
* @param resultSet
*/
public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
closeResultSet(resultSet);
closeStatement(statement);
closeConnection(connection);
}
}

时间: 2024-10-24 05:19:12

jdbc的优化的相关文章

JDBC性能优化方案

近期用到了利用JDBC查询Oracle数据库,但是查询效率不尽人意,研究了一下JDBC方面可以优化的地方,在这里跟大家分享一下. 1.设置最优的预取值 defaultRowPrefetch:预取条数默认值 defaultBatchValue:触发查询操作的批量请求值 这两个参数的默认值都是10,我们可以通过增加这两个参数值来减少数据库请求以提高查询效率,当然具体值大小要视具体情况而定. 2.通过连接池获取连接 创建连接的代价很大,通过连接池获取连接可省去创建连接时间. 3.选择合适的Statem

JDBC编程-优化程序(六)

首先完成DTO类的编写 DTO类是data tranfer object也就是数据传输类,DTO主要用于数据的传输操作,其中包含属性值,以及构造方法和getter ,setter方法等,不会包含业务逻辑. 首先是Identity类,这个是抽象类. public abstract class IdEntity { protected long id; public long getId() { return id; } public void setId(long id) { this.id =

java jdbc的优化之BeanUtils组件

1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils组件,  作用是简化javabean的操作! 用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件! 使用BenUtils组件: 引入commons-beanutils-1.8.3.jar核心包 引入日志支持包: commons-logging-1.1.3.

优化JDBC开发

一.元数据 元数据:数据库.表.列的定义信息 1.DataBaseMetaData对象 getURL():返回一个String类对象,代表数据库的URL. getUserName():返回连接当前数据库管理系统的用户名. getDatabaseProductName():返回数据库的产品名称. getDatabaseProductVersion():返回数据库的版本号. getDriverName():返回驱动驱动程序的名称. getDriverVersion():返回驱动程序的版本号. isR

Mybatis原理分析一 从JDBC到Mybaits

1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架.再而论述Mybatis作为一个数据持久层框架本身有待改进之处. 2.JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: (1)  加载JDBC驱动 (2)  建立并获取数据库连接 (3)  创建 JDBC Statements 对象 (4)  设置SQL语句的传入参数 (5)  执行SQL语句并获得查询结果 (

JDBC的批处理操作三种方式

SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处理的用法有三种. package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; /** * JDBC的批量操作三种方式 * * @auth

JSP(3) ----JDBC编程2

接上节: 对上节http://4440271.blog.51cto.com/4430271/1661684 程序修改: package com.jike.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TransactionTest { public static Connec

【Mybatis3学习入门】【一】从JDBC到Mybatis

转自:  http://chenjc-it.iteye.com/blog/1455688 1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架.再而论述Mybatis作为一个数据持久层框架本身有待改进之处. 2.JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: (1)  加载JDBC驱动 (2)  建立并获取数据库连接 (3)  创建 JDBC Statemen

从JDBC到Mybatis

http://chenjc-it.iteye.com/blog/1455688 1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架.再而论述Mybatis作为一个数据持久层框架本身有待改进之处. 2.JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: (1)  加载JDBC驱动 (2)  建立并获取数据库连接 (3)  创建 JDBC Statements 对象