前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈数据库连接池

谈谈数据库连接池

作者头像
云海谷天
发布2022-08-09 13:46:24
3730
发布2022-08-09 13:46:24
举报
文章被收录于专栏:技术一点点成长

前言:

最近又在为暑假的实习奔波...今天的面试被问到连接池有没有使用过,一时竟然哑口(简历上写的可以熟悉mysql啊~)。回来反思总结了一下,然后又看了20分钟网上视频。为防止下次面试又出糗,于是便有了这篇随笔~

l 为什么使用数据库连接池:

  为了避免每次访问数据库的时候都需要重新建立新的连接而影响运行速度,在实际的项目中通常使用数据库连接池来统一调配,从而提高数据库的访问效率。

l 原理示意图:

l 下载解压

l 用浏览器查看文档doc下的index.html文件

l 常见2种连接方式

(1)java文件实例化DataSource (详见后面实例代码)

(2)src目录下创建c3p0-config.xml

代码语言:javascript
复制
 1 <c3p0-config>
 2 
 3   <named-config name="helloc3p0">
 4 
 5    <!-- 自己配置數本機據庫屬性 -->
 6 
 7    <property name="driverClass">com.mysql.jdbc.Driver</property>
 8 
 9    <property name="jdbcUrl">jdbc:mysql://localhost/youku</property>
10 
11    <property name="user">root</property>
12 
13    <property name="password">1234</property>
14 
15   
16 
17    <!-- 從index.html說明文檔裡面複製后自行修改即可 -->
18 
19     <property name="acquireIncrement">5</property>
20 
21     <property name="initialPoolSize">5</property>
22 
23     <property name="minPoolSize">5</property>
24 
25     <property name="maxPoolSize">10</property>
26 
27  
28 
29     <property name="maxStatements">2</property> 
30 
31     <property name="maxStatementsPerConnection">5</property>
32 
33  
34 
35   </named-config>
36 
37 </c3p0-config>

l 封装调用(完整代码)

代码语言:javascript
复制
  1 package util;
  2 
  3  
  4 
  5 import java.sql.Connection;
  6 
  7 import java.sql.DriverManager;
  8 
  9 import java.sql.SQLException;
 10 
 11 import javax.sql.DataSource;
 12 
 13  
 14 
 15 import com.mchange.v2.c3p0.ComboPooledDataSource;
 16 
 17  
 18 
 19 public class JDBCUtil {
 20 
 21 Connection conn = null;
 22 
 23  
 24 
 25 public Connection getjdbcConnection() throws Exception {
 26 
 27 Class.forName("com.mysql.jdbc.Driver");
 28 
 29 String url = "jdbc:mysql://localhost:3306/youku";
 30 
 31 return DriverManager.getConnection(url, "root", "1234");
 32 
 33 }
 34 
 35 //因为使用连接池只需要进行一次初始化,因此声明为'static'类型
 36 
 37 private static DataSource datasource;
 38 
 39 static {
 40 
 41 datasource = new ComboPooledDataSource("helloc3p0");
 42 
 43 }
 44 
 45  
 46 
 47 public Connection getc3p0Connection() throws Exception {
 48 
 49 return datasource.getConnection();
 50 
 51 }
 52 
 53 //测试2种不同的连接方式jdbc 和 c3p0数据库连接池
 54 
 55 public void test() throws Exception {
 56 
 57 conn = this.getjdbcConnection();
 58 
 59 System.out.println("jdbc连接方式:" + conn.getMetaData());
 60 
 61 conn = this.getc3p0Connection();
 62 
 63 System.out.println("c3p0连接池方式:" + conn.getMetaData());
 64 
 65 }
 66 
 67  
 68 
 69 // method 1: 實例化c3p0數據源對象,進行屬性set設置
 70 
 71 public void c3p0() throws Exception {
 72 
 73 ComboPooledDataSource cpds = new ComboPooledDataSource();
 74 
 75 cpds.setDriverClass("com.mysql.jdbc.Driver"); // loads the jdbc driver
 76 
 77 cpds.setJdbcUrl("jdbc:mysql://localhost/youku");
 78 
 79 cpds.setUser("root");
 80 
 81 cpds.setPassword("1234");
 82 
 83 System.out.println(cpds.getDataSourceName());
 84 
 85 System.out.println("最大連接池數量:"+cpds.getMaxPoolSize());
 86 
 87  
 88 
 89 }
 90 
 91  
 92 
 93 // method 2:引用配置好的數據源
 94 
 95 public void c3p0_1() throws SQLException {
 96 
 97 // helloc3p0 對應 "c3p0-config.xml文件中的app-name"
 98 
 99 DataSource dataSource = new ComboPooledDataSource("helloc3p0");
100 
101 System.out.println(dataSource.getConnection());
102 
103  
104 
105 ComboPooledDataSource cp = (ComboPooledDataSource) dataSource;
106 
107 System.out.println("最大連接池數量:"+cp.getMaxPoolSize());
108 
109 }
110 
111  
112 
113 public static void main(String[] args) throws Exception {
114 
115  
116 
117 new JDBCUtil().test();
118 
119 new JDBCUtil().c3p0();
120 
121 new JDBCUtil().c3p0_1();
122 
123 }
124 
125  
126 
127 }

测试结果:

l 可能出现的问题:

1)没有添加相关jar包,无法运行!

2)xml文件没有创建在lib或者src目录下,可能出现报错:“...don’t exist...”

(hint:“c3p0-config.xml”这个文件名一般不改,否则也可能出现类似的错误!)

结语:

数据库连接池也算是JDBC的一个知识点的小拓展,如果这点常识都不能掌握那可不能轻易说自己熟悉mysql,JDBC了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • l 为什么使用数据库连接池:
  • l 原理示意图:
  • l 下载解压
  • l 用浏览器查看文档doc下的index.html文件
  • l 常见2种连接方式
  • (2)src目录下创建c3p0-config.xml
  • l 封装调用(完整代码)
  • l 可能出现的问题:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档