JDBC连接池(数据源)

自定义连接池:用装饰设计模式将原连接的close方法改造成将连接还回数据源;装饰设计模式:http://www.cnblogs.com/tongxuping/p/6832518.html;

开源数据库连接池:

  C3P0连接池:

    基本步骤:

    1.导入开发包
           2.创建数据库连接池
          ComboPooledDataSource cpds = new ComboPooledDataSource();
           3.配置基本的连接信息
               a) 通过setters方法来设置参数
               b) 通过c3p0-config.xml文件来配置基本连接信息
               c) 通过c3p0.properties文件来配置基本连接信息

示例代码:

 1 package Pool;
 2
 3
 4 import java.sql.Connection;
 5 import java.sql.PreparedStatement;
 6
 7 import JDBCutils.JDBCutils;
 8
 9 import com.mchange.v2.c3p0.ComboPooledDataSource;
10
11 /*
12  * c3p0 是个开源是数据源
13  * c3p0被称为数据库链接池,用来管理数据库链接的获取和存储。
14  * 有两种写法:
15  *     方式一:在创建对象后直接设置JDBC的基本信息,如:数据库驱动,数据库url,登陆数据库用户名和密码;然后再对数据库操作
16  *     方式二:外建一个xml或者properties配置文件,存在配置文件时无需对数据库基本信息进行设置。直接获取数据库连接,对数据库相应的操作
17  */
18 public class C3P0 {
19     public static void main(String[] args) {
20
21         Connection conn = null;
22         PreparedStatement ps=null;
23         //通过ComboPooledDataSource获取dateSource即数据源,可从中获取数据库的链接。
24         ComboPooledDataSource pool = new ComboPooledDataSource();
25         //ComboPooledDataSource pool = new ComboPooledDataSource("config1");
26         /*
27          * 传参表示需要使用config1的配置信息为数据库操作信息
28          */
29         try {
30             /*pool.setDriverClass("com.mysql.jdbc.Driver");
31             pool.setJdbcUrl("jdbc:mysql:///mydb5");
32             pool.setUser("root");
33             pool.setPassword("admin");*/
34
35             conn = pool.getConnection();
36             String sql="delete from tb_batch where id>?";
37             ps = conn.prepareStatement(sql);
38             ps.setInt(1, 20);
39             int rows = ps.executeUpdate();
40             System.out.println(rows);
41
42
43
44         } catch (Exception e) {
45             e.printStackTrace();
46         }finally{
47             JDBCutils.closeResou(conn, ps, null);
48         }
49     }
50 }

XML配置:XML文件名必须为:c3p0-config.xml,否则都不到配置信息;name不能随意写。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <c3p0-config>
 3     <default-config>
 4         <!-- setting -->
 5         <!-- c3p0默认读取这块 -->
 6         <property name="driverClass">com.mysql.jdbc.Driver</property>
 7         <property name="jdbcUrl">jdbc:mysql:///mydb5</property>
 8         <property name="user">root</property>
 9         <property name="password">admin</property>
10     </default-config>
11
12
13     <named-config name="config1">
14         <!--  -->
15         <property name="driverClass">com.mysql.jdbc.Driver</property>
16         <property name="jdbcUrl">jdbc:mysql:///mydb1</property>
17         <property name="user">admin</property>
18         <property name="password">123</property>
19     </named-config>
20 </c3p0-config>

Properties配置:

1 c3p0.driverClass=com.mysql.jdbc.Driver
2 c3p0.jdbcUrl=jdbc:mysql:///mydb1
3 c3p0.user=root
4 c3p0.password=root
时间: 2024-11-16 13:39:45

JDBC连接池(数据源)的相关文章

JDBC连接池C3P0

连接池 1)传统方式找DriverManager要连接,数目是有限的. 2)传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端执行 3)项目中,对于Connection不说,不会直接使用DriverManager取得,而使用连接池方式. 4)DBCP和C3P0,都是Java开源的,都必须直接或间接实现javax.sql.DataSource接口 5)DBCP连接池需要dbcp.properties文件,同时需加入3个对应的j

数据层优化-jdbc连接池简述、druid简介

终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化去写,本篇是一个开始.本文会介绍连接池技术并对比目前比较流行的java连接池技术,之后,会把druid整合到项目中来,将技术方案落地,实际整合到项目中,让技术能为我所用. 使用连接池的原因 jdbc的demo //第一步,注册驱动程序 //com.MySQL.jdbc.Driver Class.fo

JDBC连接池概述

Reference Source:https://www.progress.com/tutorials/jdbc/jdbc-jdbc-connection-pooling 介绍 本文档提供的信息旨在帮助开发人员为必须处理连接池的应用程序提供连接池策略. 首先, 本文档提供 jdbc 3.0 规范指定的 jdbc 连接池概述. 接下来, 它提供了一些示例, 说明如何使用 DataDirect 连接池管理器 (它随 DataDirect Connect?用于jdbc 和 DataDirect Seq

号称性能最好的JDBC连接池:HikariCP

HikariCP号称是现在性能最好的JDBC连接池组件,具体的性能到底如何,我也没有仔细的测试过,不过从它现在的发展来看,其可能确实如它宣传的那样其性能高过目前所有的连接池组件.之前对连接池的记忆一直都是C3P0.DBCP.BoneCP,这三者中BoneCP的性能是最好的,C3P0的性能在现在来说确实是非常差的了,好像C3P0很久都没有更新了,所以我们应该杜绝在项目中使用C3P0,至于是否要使用HikariCP,我觉得可以尝试.HikariCP毕竟是才出来不久,其性能到底如何,也需要实践的检验,

JDBC连接池的简单实现

先说明一下,我本身是做android开发的,java web是我的弱项,只是近来京东云免费,于是去折腾了几下,有了些许经验,特作分享.如果文章中内容有误,还请各高手指正. 我在web端,需要连接数据库进行查询插入等操作,但是每次进行操作都先获取连接用完后就断开的话,未免效率太低.以前知道tomcat中可以配置,但是京东云引擎的tomcat并不能由自己配置.因为我折腾的东西较小,所以也不考虑使用框架,于是就想自己写一个. 我写的连接池很简单,在初始化时创建5个连接,并放在一个列表当中.如果要获取连

使用了Tomcat JDBC连接池不能重连的问题

在项目中用到了tomcat 的jdbc连接池,发现一个问题是,当数据库重启时,服务没有重新的去连接数据库,需要将部署的项目重新启动才能连接到数据库.经过测试对配置做一下修改: 在配置dataSource的地方加入两个配置属性: <property name="testOnBorrow" value="true"/> <!--在连接返回给调用者前用于校验连接是否有效的SQL语句,如果指定了SQL语句,则必须为一个SELECT语句,且至少有一行结果--

Spring boot (11) tomcat jdbc连接池

默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了spring boot的jdbc组件,就会自动引入tomcat jdbc连接池. 默认参数 以下是org.apache.tomcat.jdbc.pool.PoolProperties源码,这是tomcat jdbc连接池的默认初始参数.这个类实现了一个接口PoolConfiguration,查看这个

JDBC 连接池

数据库连接池(connection pool) JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 数据库的连接资源并没有得到很好的重复利用. 对于每一次数据库连接,使用完后都得断开. 这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃. 数据库连接池 数据库连接池的基本思

MySql &amp; JDBC &amp; 连接池 &amp; 总结

连接池:解决资源浪费,提高代码性能. 本小节目标: 使用DBCP,C3P0连接池完成基本数据库的操作. 使用DBUtils完成CRUD的操作. 数据库连接池的解决方案是: 当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池.每次应用程序请求数据库连接时,无须重新打开连接,而是从连接池中取出已有的连接使用,使用完后不再关闭数据库连接,而是直接将连接归还给连接池.通过使用连接池,将大大提高程序的运行效率. 数据库连接池是Connection 对象的工程.数据库连接池的常用参数