Jdbc使用总结和工具封装(三)
数据库连接所需必要资源:
1. driverClass
2. jdbcUrl
3. username
4. password
关于数据库的性能配置
1. 初始化数据库连接池对象Connection个数
2. 阈值最多数据库连接对象Connection个数和最小个数
3. 等待时间
4. 每一个Connection对象最大的Statement个数
Connection对象需要结构存储
底层参数Connection对象,采用的形式是链表结构,增删快
代理
用户依然使用getConnection获取数据库连接对象,同时使用close关闭资源。操作流程没有变化。
close方法在数据库连接池中不是真正的关闭当前Connection对象,而是将Connection对象归还到底层结构。
# druid.properties文件
# 文件名 druid.properties 存储在src目录下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/javaee2011?useSSL=false
username=root
password=123456
# 初始化数据库连接池容量
initialSize=10
# 最大容量
maxActive=30
# TimeOut 等待超时时间
maxWait=2000
package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JdbcUtil {
private static DataSource ds;
static {
try {
Properties properties = new Properties();
properties.load(new FileInputStream("./src/druid.properties"));
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection connection = null;
try {
connection = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void close(Connection conn) {
close(conn, null, null);
}
public static void close(Connection conn, Statement st) {
close(conn, st, null);
}
public static void close(Connection conn, Statement st, ResultSet rs) {
try {
close(rs, st, conn);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void close(AutoCloseable... res) throws Exception {
for (AutoCloseable re : res) {
if (re != null) {
re.close();
}
}
}
}