【JDBC笔记】第三方连接池:DBCP/C3P0
来源:互联网 发布:优化发展环境讲话 编辑:程序博客网 时间:2024/06/16 08:40
JDBC第三方连接连接池
一.连接池
1.概述:
管理数据库的连接.存放多个连接对象的容器,因为,我们没获取一次连接对象,底层会很耗费资源,那连接池,能够高效的管理连接对象。2.作用:
提高项目的性能.在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可.3.常见连接池:
DBCPC3P0
二.DBCP
1.概述:
DBCP(DataBase connection pool) 数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar和commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
2.使用步骤:
a.导入jar包(commons-dbcp.jar和commons-pool.jar)b.配置文件的方式/硬编码模式(不推荐)
3.代码:
a.硬编码方式:
1.硬编码的方式创建对象BasicDataSource ds = new BasicDataSource();//设置参数ds.setDriverClassName("com.mysql.jdbc.Driver");ds.setUrl("jdbc:mysql:///mydemo");ds.setUsername("root");ds.setPassword("123456");//获取预编译对象Connection conn = ds.getConnection();String sql="insert into user values(?,?)";PreparedStatement statement = conn.prepareStatement(sql);statement.setNull(1,Types.INTEGER);statement.setString(2,"王五");statement.executeUpdate();ds.close();
b.配置文件方式:
配置文件:
#连接基本设置driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/day39username=rootpassword=root#<!--扩展配置 了解-->#初始化连接initialSize=10#最大连接数量maxActive=50#<!-- 最大空闲连接 -->maxIdle=20#<!-- 最小空闲连接 -->minIdle=5#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->maxWait=60000#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。connectionProperties=useUnicode=true;characterEncoding=gbk#指定由连接池所创建的连接的自动提交(auto-commit)状态。defaultAutoCommit=true#driver default 指定由连接池所创建的连接的只读(read-only)状态。#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)defaultReadOnly=#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLEdefaultTransactionIsolation=READ_UNCOMMITTED
Java代码:
import java.io.FileInputStream;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Types;import java.util.Properties;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;public class DBCPDemo {public static void main(String[] args) throws Exception{//表 id 设置 primary key auto_increment Properties p = new Properties();p.load(new FileInputStream("src/dbcp.properties"));DataSource bdsf = BasicDataSourceFactory.createDataSource(p);Connection c = bdsf.getConnection();String sql="insert into users3 values(?,?)";PreparedStatement ps = c.prepareStatement(sql);ps.setNull(1, Types.INTEGER);ps.setString(2, "Ying");ps.executeUpdate();}}
三.C3P0
1.概述:
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
2.C3P0和DBCP的区别:
- dbcp没有自动回收空闲连接的功能
- c3p0有自动回收空闲连接功能
3.代码:
a.硬编码方式:
//创建对象ComboPooledDataSource ds = new ComboPooledDataSource();//设置参数ds.setJdbcUrl("");ds.setDriverClass("");ds.setUser("");ds.setPassword("");//获取连接对象Connection conn = ds.getConnection();PreparedStatement statement = conn.prepareStatement("");//执行statement.executeUpdate();
b.配置文件方式:
注意:
- 配置文件的文件名和后缀名固定的 c3p0.properties
- 必须放在src目录下
配置文件:
xml:
<c3p0-config><!-- 默认配置,如果没有指定则使用这个配置 --><default-config><!-- 基本配置 --><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/day39</property><property name="user">root</property><property name="password">root</property><!--扩展配置--><property name="checkoutTimeout">30000</property><property name="idleConnectionTestPeriod">30</property><property name="initialPoolSize">10</property><property name="maxIdleTime">30</property><property name="maxPoolSize">100</property><property name="minPoolSize">10</property><property name="maxStatements">200</property></default-config> <!-- 命名的配置 --><named-config name="yangfan"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/day39</property><property name="user">root</property><property name="password">root</property><!-- 如果池中数据连接不够时一次增长多少个 --><property name="acquireIncrement">5</property><property name="initialPoolSize">20</property><property name="minPoolSize">10</property><property name="maxPoolSize">40</property><property name="maxStatements">20</property><property name="maxStatementsPerConnection">5</property></named-config></c3p0-config>
properties:
c3p0.driverClass=com.mysql.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql:///day39c3p0.user=rootc3p0.password=root
java:
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Types;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3P0Demo {public static void main(String[] args) throws SQLException {//ComboPooledDataSource ds = new ComboPooledDataSource();//使用xml配置文件中的第二配置 参数是你的第二配置名称ComboPooledDataSource cpds = new ComboPooledDataSource();//ComboPooledDataSource cpds = new ComboPooledDataSource("yangfan");Connection c = cpds.getConnection();String sql ="insert into users4 values(?,?)";PreparedStatement ps = c.prepareStatement(sql);ps.setNull(1, Types.INTEGER);ps.setString(2, "Ash");ps.executeUpdate();cpds.close();}}
阅读全文
1 0
- 【JDBC笔记】第三方连接池:DBCP/C3P0
- JDBC连接池 DBCP C3P0
- JDBC、事物、连接池、DBCP、C3P0、DBUtils
- jdbc连接dbcp和c3p0
- 连接池-DBCP-C3P0
- 连接池-C3P0、DBCP
- 开源JDBC连接池DBCP和C3P0配置小结
- 开源JDBC连接池DBCP和C3P0配置小结
- 开源JDBC连接池DBCP和C3P0配置
- 开源JDBC连接池DBCP和C3P0配置
- JDBC连接池的比较:DBCP、C3P0、Proxool 、 BoneCP
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介
- 浅入JDBC(事务,连接池dbcp,c3p0)
- JDBC (c3p0、dbcp、jndi及不使用连接池)
- JDBC之连接池DBCP与c3p0的简单使用
- JDBC dbutils以及c3p0 dbcp连接池的使用
- JDBC 数据库连接池 -Dbcp -C3p0
- 单例模式
- yy娱乐视频swf调用方法
- Android第三方登录集合(QQ、微信、微博、百度、facebook、twitter)
- 【项目实战】---Easyui datagrid detailview使用简介
- Delphi操作Word中的表
- 【JDBC笔记】第三方连接池:DBCP/C3P0
- 引用和指针
- SOCKET中send和recv函数真正在做什么
- 位运算符说明
- ORA-01219:数据库未打开:仅允许在固定表/视图中查询
- C++类型萃取
- java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总
- Maven工程启动时出现 Unable to compile class for JSP错误
- Windows环境的GNU安装以及使用makefile编译生成*.exe