目录
Druid(德鲁伊)
Druid是阿里提供的数据看连接池,在现在主流连接池当中性能、扩展性、易用性相对更好。它不仅提供了数据库连接池的基本功能,还支持 SQL 监控、慢查询监控、日志记录等高级特性。
Druid使用
1.引入依赖
直接在lib中引入对应.jar包或
在 Maven 项目中,需要在 pom.xml
文件中添加 Druid 的依赖。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
在Gradle中 build.gradle
中添加
implementation 'com.alibaba:druid:1.2.16'
2.配置Druid连接池(软/硬代码配置)
硬代码配置
import com.alibaba.druid.pool.DruidDataSource;
public class DruidDataSourceExample {
public static void main(String[] args) {
DruidDataSource dataSource = new DruidDataSource();
// 配置基本信息
dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
dataSource.setUsername("your_username");
dataSource.setPassword("your_password");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 配置连接池大小
dataSource.setInitialSize(5);
dataSource.setMaxActive(10);
dataSource.setMinIdle(5);
// 配置获取连接等待超时的时间
dataSource.setMaxWait(60000);
// 使用数据源获取连接
try (Connection conn = dataSource.getConnection()) {
System.out.println("Connection Successful!");
// 执行数据库操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据源
dataSource.close();
}
}
}
软代码配置(配置文件配置)
先在druid.properties
文件配置连接池参数,然后在代码中加载这个配置文件。
druid.properties
文件配置示例如下:
druid.url=jdbc:mysql://localhost:3306/your_database
druid.username=your_username
druid.password=your_password
druid.driverClassName=com.mysql.cj.jdbc.Driver
druid.initialSize=5
druid.maxActive=10
druid.minIdle=5
druid.maxWait=60000
druid.filters=stat,wall,log4j
代码加载配置文件如下:
@Test
public void testResourcesDruid() throws Exception {
//1.创建Properties集合,用于存储外部配置文件的key和value值。
Properties properties = new Properties();
//1.创建Properties集合,用于存储外部配置文件的key和value值。
InputStream inputStream = DruidTest.class.getClassLoader().getResourceAsStream("druid.properties");
properties.load(inputStream);
//1.创建Properties集合,用于存储外部配置文件的key和value值。
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//4.通过连接池获取连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
//5.开发CRUD
//6.回收连接
connection.close();
}
配置属性说明:
·url
:数据库的 JDBC 连接 URL。
·username
:连接数据库的用户名。
·password
:连接数据库的密码。
·driverClassName
:JDBC 驱动类的全限定名。
·initialSize
:初始化时创建的连接数(默认值:0)。
·maxActive
:连接池中最大活动连接数(默认值:8)。通常也称为最大连接数。
·minIdle
:连接池中保持的最小空闲连接数(默认值:与initialSize
相同)。
·maxWait
:获取连接的最大等待时间(毫秒,默认值:无限制)。超过时间则抛出异常。
Hikari(ひかり)
Hikari取自日语“光”,广泛应用于java应用程序当中,是SpringBoot2.x之后内置的一款连接池,以轻量级、高效率、低延迟而著称,是目前性能最好的数据库连接池之一。
Hikari使用
1.引用依赖:
直接在lib中引入对应.jar包或
在 Maven 项目中,需要在 pom.xml
文件中添加 HikariCP 的依赖。
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
如果使用的是 Gradle,则在 build.gradle
中添加:
implementation 'com.zaxxer:HikariCP:5.0.1'
2.配置 HikariCP 连接池(软/硬代码配置)
硬代码配置
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class HikariCPExample {
public static void main(String[] args) {
// 1. 配置 HikariCP
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
config.setUsername("your_username");
config.setPassword("your_password");
config.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 2. 配置连接池属性
config.setMaximumPoolSize(10);
config.setMinimumIdle(5);
config.setConnectionTimeout(30000);
config.setIdleTimeout(600000);
config.setMaxLifetime(1800000);
// 3. 创建数据源
HikariDataSource dataSource = new HikariDataSource(config);
// 4. 使用数据源获取连接
try (Connection conn = dataSource.getConnection()) {
System.out.println("Connection Successful!");
// 执行数据库操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 5. 关闭数据源
dataSource.close();
}
}
}
软代码配置(配置文件配置)
先通过 hikari.properties
文件进行配置,然后在代码中加载这个配置文件。
hikari.properties
文件示例如下:
dataSourceClassName=com.mysql.cj.jdbc.MysqlDataSource
dataSource.url=jdbc:mysql://localhost:3306/your_database
dataSource.user=your_username
dataSource.password=your_password
maximumPoolSize=10
minimumIdle=5
connectionTimeout=30000
idleTimeout=600000
maxLifetime=1800000
代码加载配置文件如下:
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class HikariCPExample {
public static void main(String[] args) {
// 1. 加载配置文件
HikariConfig config = new HikariConfig("/path/to/hikari.properties");
// 2. 创建数据源
HikariDataSource dataSource = new HikariDataSource(config);
// 3. 使用数据源获取连接
try (Connection conn = dataSource.getConnection()) {
System.out.println("Connection Successful!");
// 执行数据库操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 4. 关闭数据源
dataSource.close();
}
}
}
配置属性说明:
JdbcUrl
:数据库连接 URL。Username
和Password
:数据库用户名和密码。DriverClassName
:JDBC 驱动的类名。MaximumPoolSize
:连接池中允许的最大连接数。MinimumIdle
:连接池中保持空闲的最小连接数。ConnectionTimeout
:获取连接的最大等待时间(毫秒)。IdleTimeout
:连接在空闲状态下被保留的最大时间(毫秒),超过此时间则会被释放。MaxLifetime
:连接在池中最长的生命周期(毫秒),超过此时间的连接将被回收。