jsp_连接池
来源:互联网 发布:双十一店铺数据分析 编辑:程序博客网 时间:2024/05/29 07:51
1: 连接池(DBCP与C3p0) 1): 之前的连接操作 拿到一个连接--->执行sql进行数据操作--->关闭连接 ps: 这样的话存在一些缺点的,比如每拿到一个连接用完后则就把这个连接关闭了,这很浪费,毕竟拿到一个连接等是需要时间的 这样也不能很好的对连接数进行控制 ,如果连接数过多的话,则可能会有内存泄漏服务器崩溃 2): 连接池 连接池则在创建一个数据库连接的缓冲池,在这个缓冲池创建时则可以在里边初始化一定的连接数,如需要获取连接时,则只需要到这个缓冲池中获取就行, 且用完后并不会把连接销毁,而是放回到缓冲池中,我们也可以设置同时的最大连接数等等,可以很好的避免之前连接操作的缺点 3): DataSource接口 对于数据库连接操作,有给我们提供了一个DataSource接口让我们来实现, 而这个接口一般会由一些开源组织或者服务器来实现 常用的有DBCP连接池与C3P0连接池, DataSource一般也叫数据源,也习惯把DataSource叫做连接池2: DBCP连接池 1): DBCP连接池使用前提 需要导入两个jar包commons-dbcp.jar, commons-pool.jar 2): 数据源对象 数据源对象与数据库连接对象不同,它是产生(获取 )数据库连接对象的工厂3: C3P0连接池 1): 使用前提需要导入c3p0的jar包 2): 使用
Dbcp
package com.tz.servlet.test;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import org.apache.tomcat.dbcp.dbcp.BasicDataSource;import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;import org.junit.Test;public class DbcpTest { /* * 第二种方法 */ @Test public void testDataSource2() throws Exception { Properties properties = new Properties(); InputStream inStream = DbcpTest.class.getClassLoader().getResourceAsStream("db.properties"); properties.load(inStream); DataSource dataSource = BasicDataSourceFactory.createDataSource(properties); Connection conn = dataSource.getConnection(); System.out.println(conn); BasicDataSource bds = (BasicDataSource) dataSource; System.out.println(bds.getInitialSize()); } /* * 第一种方法 */ @Test public void testDataSource() throws SQLException { //拿到一个数据源对象 BasicDataSource dataSource = new BasicDataSource(); //设置连接基本属性值 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=true"); dataSource.setUsername("root"); dataSource.setPassword("123"); //设置连接池中同时最大的连接数 dataSource.setMaxActive(3); //设置连接池启动时创建的初始化连接数 dataSource.setInitialSize(3); //设置连接池最大的等待时间 单位毫秒 dataSource.setMaxWait(1000*4); //设置连接池中最小的空闲连接 dataSource.setMinIdle(3); Connection conn1 = dataSource.getConnection(); System.out.println(conn1); Connection conn2 = dataSource.getConnection(); System.out.println(conn2); Connection conn3 = dataSource.getConnection(); System.out.println(conn3); //释放连接,放回连接池中 conn3.close(); //Connection conn4 = dataSource.getConnection(); //System.out.println(conn4); }}
c3p0
package com.tz.servlet.test;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.SQLException;import org.junit.Test;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3P0Test { private static ComboPooledDataSource pool = null; static { pool = new ComboPooledDataSource("intergalactoApp"); } /* * 第二种方法,使用配置文件 */ @Test public void testC3p0_2() throws SQLException { Connection conn1 = pool.getConnection(); System.out.println(conn1); Connection conn2 = pool.getConnection(); System.out.println(conn2); Connection conn3 = pool.getConnection(); System.out.println(conn3); Connection conn4 = pool.getConnection(); System.out.println(conn4); } /* * 第一种方法 */ @Test public void testC3p0_1() throws PropertyVetoException, SQLException { //创建一个ComboPooledDataSource对象 ComboPooledDataSource pool = new ComboPooledDataSource(); //设置基本连接属性值 pool.setDriverClass("com.mysql.jdbc.Driver"); pool.setJdbcUrl("jdbc:mysql://localhost:3306/test?useSSL=true"); pool.setUser("root"); pool.setPassword("123"); //获取连接 Connection conn = pool.getConnection(); System.out.println(conn); }}
c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?><c3p0-config> <named-config name="intergalactoApp"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/test?useSSL=true</property> <property name="user">root</property> <property name="password">123</property> <!-- 设置最大的连接数 --> <property name="maxPoolSize">3</property> <!-- 设置连接池启动时创建的初始化连接数量 --> <property name="initialPoolSize">3</property> <!-- 设置最大的等待时间 --> <property name="checkoutTimeout">5000</property> <!-- 一个连接同时能够使用Statement对象个数 --> <property name="maxStatementsPerConnection">5</property> </named-config></c3p0-config>
阅读全文
0 0
- jsp_连接池
- jsp_分页
- jsp_指令
- jsp_笔记
- jsp_过滤器
- Jsp_保留小数点后两位
- JSP_中的包含
- JSP_<jsp:forward>应用
- JSP_<jsp:application>实例
- jsp_ include动态包含
- jsp_ ServletContext对象
- jsp_自定义简单标签
- jsp_实现文件下载功能
- jsp_思维导图总结
- jsp_获取图片并显示
- JSP_利用JavaBean来传递表单数据
- jsp_自定义标签_显示分页标签
- java自学之路-----JSP_基础语法
- CentOS 下的 SNMP 及 PHP如何连接
- Gerrit的使用
- 蓝桥杯 01字串
- 如何在Windows系统中设置Python程序定时运行
- js中数组与对象的遍历
- jsp_连接池
- UnityShader中Tiling和Offset参数设置时贴图异常问题
- Golang 依赖包下载时候代理设置
- VC6.0编译jpeglib库
- C++ golang Centos7.4 vim 编码环境
- 图像处理中的采样与量化
- java springMVC session与cookie
- spark数据导入导出
- js window.onlload 自遐想