文章目录
0、前言
总所周知Druid是一个功能强大,性能优秀,Java语言最好的数据库连接池之一…
什么是数据库连接池?
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
之前我们代码中使用连接是没有使用都创建一个Connection对象,使用完毕就会将其销毁。这样重复创建销毁的过程是特别耗费计算机的性能的及消耗时间的。
而数据库使用了数据库连接池后,就能达到Connection对象的复用,如下图
连接池是在一开始就创建好了一些连接(Connection)对象存储起来。用户需要连接数据库时,不需要自己创建连接,而只需要从连接池中获取一个连接进行使用,使用完毕后再将连接对象归还给连接池;这样就可以起到资源重用,也节省了频繁创建连接销毁连接所花费的时间,从而提升了系统响应的速度。
数据库连接池实现
-
标准接口:DataSource
官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。该接口提供了获取连接的功能:
Connection getConnection()
那么以后就不需要通过
DriverManager
对象获取Connection
对象,而是通过连接池(DataSource)获取Connection
对象。 -
常见的数据库连接池
- DBCP
- C3P0
- Druid
我们现在使用更多的是Druid,它的性能比其他两个会好一些。
-
Druid(德鲁伊)
-
Druid连接池是阿里巴巴开源的数据库连接池项目
-
功能强大,性能优秀,是Java语言最好的数据库连接池之一
-
1、Druid使用方法一(不使用配置文件)
这里使用maven来构建项目
1.1 导包
<!--导入Druid这个连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
1.2 使用
//申明连接池的这个包
DruidDataSource druidDataSource=new DruidDataSource();
//设置驱动
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
//设置链接地址
druidDataSource.setUrl("jdbc:mysql:///db1?useSSL=false");
//设置连接数据库的用户名
druidDataSource.setUsername("root");
//设置连接数据库的密码
druidDataSource.setPassword("root");
//设置最大的等待时间(如果超过时间还未来拿这个连接这个连接就会被关闭)
druidDataSource.setMaxWait(1234567890);
//这个指的是这个连接池支持的最大的活跃数
druidDataSource.setMaxActive(100);
// 连接池中最小的空闲的连接数,低于这个数量会被创建新的连接
druidDataSource.setMinIdle(10);
//下面就可以获取这个连接了
DruidPooledConnection connection = druidDataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("sql语句");
preparedStatement.setObject(1,"内容");
...
int i = preparedStatement.executeUpdate();
System.out.println("影响的行数是:"+i);
2、Druid使用方法二(使用配置文件)
这里使用maven来构建项目
2.1 导包
<!--导入Druid这个连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
2.2 设置配置文件
在resources文件夹里面创建druid.properties文件,文件内容如下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=1948
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
2.3 使用
//加载配置文件
Properties prop=new Properties();
prop.load(Test.class.getClassLoader().getResourceAsStream("druid.properties"));
//获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("sql语句");
preparedStatement.setObject(1,"内容");
...
int i = preparedStatement.executeUpdate();
System.out.println("影响的行数是:"+i);