数据库连接池
来源:互联网 发布:苹果软件 编辑:程序博客网 时间:2024/05/18 23:57
数据库连接池
JDBC连接是连接数据库常用的方式,但是连接只有当需要的时候才创建,因此每次创建连接都需要耗费比较多的时间,会导致效率低下
数据库连接池的原理是在一个连接池中创建多条连接,当需要时就把连接拿出来使用,等到使用结束之后又把这条连接返回到线程池,这样就实现了资源的重新利用,并且不用等到需要的时候才去创建连接,提高了效率
连接池主要有两种数据源
- DBCP数据源
- C3P0数据源
注释: - 数据源和数据库连接不同,数据源无需创建多个,它是产生数据库连接的工厂(工厂设计模式),因此整个应用只需要一个数据源即可
- 只需创建一个数据源,体现了单例设计模式的思想
C3P0数据源
C3P0连接池的优点:不仅可以自动清理不再使用的Connection,还可以自动清理Statement和ResultSet
使用C3P0连接池的步骤:
下载C3P0-0.9.1.2.jar 包,将它导入到所在的工程当中 ,注意要放在src目录下
其次要搭配好关于自己数据库的一些信息
public final class connectPool{ private static connectPool instance ; private static ComboPooledDataSource dataSource; //把构造方法设为私有不可见 private connectPool(){ dataSource = new ComboPooledDataSource(); dataSource.setUser("root"); //设置用户名 dataSource.setPassword("xxxx"); //设置密码 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/qg");//设置连接的url dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setMinPoolSize(1);//设置最小连接数为1 dataSource.setMaxPoolSize(50);//设置最大连接数为50 dataSource.setMaxStatement(50); //设置最长等待时间 } } //确保只是建立一个连接池,不会浪费资源 public static final connectPool getInstance(){ if(instance == null){ //加入连接池还没创建,则新建一个连接池 instance = new connectPool(); //内部的构造方法 } return instance; } } //建立连接 public sychrnoized final Connection getConnection(){ Connection conn = null; conn = dataSource.getConnection(); }
- 除此之外还可以通过配置xml文件来设置数据库的链接,就不需要最前面的代码
特别注意
<c3p0-config> <!-- 注意这里的命名要和和之后建立连接的名称一致--> <named-config name="mysql"> <property name ="driverClass">com.mysql.jdbc.Driver</property> <!--具体到你要连接的表名--> <<property name ="jdbcUril">jdbc:mysql://localhost:3306/qg</property> <property name ="user">root</property> <property name ="password">xxxxxx</property> <property name ="initialPoolSize">10</property> <property name ="maxIdleTime">30</property> <property name ="minPoolSize">10</property> <property name ="MaxPoolSize">100</property> <property name ="maxStatements">150</property> </named-config></c3p0-config>
之后再使用时要注明好链接的名称
public static void main(String[] args){ ComboPooledDataSource ds = new ComboPooledDataSource("mysql"); //...... }
注释:连接池的增删查改和JDBC连接基本类似,通过select、update、delete和insert等关键字来进行。
阅读全文
0 0
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- oracle 之除数不为0
- [jzoj3889]【NOIP2014模拟10.25B组】序列问题
- [转]pycharm的一些快捷键
- 机器学习——推荐系统 知识点总结
- hexo入门学习(二):关联GitHub
- 数据库连接池
- 提高网站访问速度的34条军规(1)
- 计算机进制
- 工单系列2 ---- MyBatis 报错 there is no getter for property named “xxx” in "class xxx"
- 串口UART的封装函数
- .net开发windows服务小结
- [bzoj3664][Noi2014]魔法森林 Link-Cut-Tree 并查集
- 块级标签与内联标签
- java输出1000内的完数