JDBC查阅笔记---数据库连接池
> * 数据库连接池是个容器,负责分配、管理数据库连接 (Connection)
> * 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
* 好处
> * 资源重用
> * 提升系统响应速度
> * 避免数据库连接遗漏
> * 资源重用
> * 提升系统响应速度
> * 避免数据库连接遗漏
数据库连接池实现
* 标准接口:==DataSource==
官方 (SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。该接口提供了获取连接的功能:
java Connection getConnection()
那么以后就不需要通过 DriverManager
对象获取 Connection
对象,而是通过连接池(DataSource)获取 Connection
对象。
-
常见的数据库连接池
- DBCP
- C3P0
- Druid
我们现在使用更多的是 Druid,它的性能比其他两个会好一些
Druid(德鲁伊)
-
Druid 连接池是阿里巴巴开源的数据库连接池项目
-
功能强大,性能优秀,是 Java 语言最好的数据库连接池之一
- Driud 使用
> * 导入 jar 包 druid-1.1.12.jar
> * 定义配置文件
> * 加载配置文件
> * 获取数据库连接池对象
> * 获取连接
Druid数据库连接池演示
*/
public class DruidDemo {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-comment">//1.导入jar包</span>
<span class="hljs-comment">//2.定义配置文件</span>
<span class="hljs-comment">//3. 加载配置文件</span>
<span class="hljs-type">Properties</span> <span class="hljs-variable">prop</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Properties</span>();
prop.load(<span class="hljs-keyword">new</span> <span class="hljs-title class_">FileInputStream</span>(<span class="hljs-string">"jdbc-demo/src/druid.properties"</span>));
<span class="hljs-comment">//4. 获取连接池对象</span>
<span class="hljs-type">DataSource</span> <span class="hljs-variable">dataSource</span> <span class="hljs-operator">=</span> DruidDataSourceFactory.createDataSource(prop);
<span class="hljs-comment">//5. 获取数据库连接 Connection</span>
<span class="hljs-type">Connection</span> <span class="hljs-variable">connection</span> <span class="hljs-operator">=</span> dataSource.getConnection();
System.out.println(connection); <span class="hljs-comment">//获取到了连接后就可以继续做其他操作了</span>
<span class="hljs-comment">//System.out.println(System.getProperty("user.dir"));</span>
}
}