在Java中使用连接池可以显著提高数据库操作的性能,因为连接池可以重用已经建立的数据库连接,而不是为每次操作都创建新的连接。以下是使用C3P0和Druid两种流行连接池的示例。
使用C3P0连接池
添加C3P0依赖
通过Maven添加依赖:
```xml
c3p0
```
配置C3P0连接池
创建一个`c3p0-config.xml`文件,内容如下:
```xml
```
在Java代码中使用连接池
```java
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DatabaseUtil {
private static ComboPooledDataSource dataSource;
static {
try {
dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUser("root");
dataSource.setPassword("password");
dataSource.setMaxPoolSize(50);
dataSource.setMinPoolSize(10);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
```
使用Druid连接池
添加Druid依赖
通过Maven添加依赖:
```xml
druid
```
配置Druid连接池
创建一个`druid.properties`文件,内容如下:
```properties
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test_db
username=root
password=123456
initialSize=5
minIdle=5
maxActive=20
maxWait=60000
```
在Java代码中使用连接池
```java
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DatabaseUtil {
private static DruidDataSource dataSource;
static {
try {
dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test_db");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setInitialSize(5);
dataSource.setMinIdle(5);
dataSource.setMaxActive(20);
dataSource.setMaxWait(60000);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
```
总结
C3P0:通过配置文件`c3p0-config.xml`创建数据源,并在代码中通过`ComboPooledDataSource`获取连接。
Druid:通过配置文件`druid.properties`创建数据源,并在代码中通过`DruidDataSource`获取连接