连接池的作用以及创建

连接池的作用就是用来管理连接,提升连接的利用效率

hibernate中连接池如何配置

	<!-- 1. 数据库连接配置 -->
	<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	<property name="hibernate.connection.url">jdbc:mysql:///hib_demo</property>
	<property name="hibernate.connection.username">root</property>
	<property name="hibernate.connection.password">abc</property>
	<!-- 
		数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
	 -->
	<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
	
	<!-- 2. 其他相关配置 -->
	<!-- 2.1 显示hibernate在运行时候执行的sql语句 -->
	<property name="hibernate.show_sql">true</property>
	<!-- 2.2 格式化sql
	<property name="hibernate.format_sql">true</property>  -->
	<!-- 2.3 自动建表  -->
	<property name="hibernate.hbm2ddl.auto">update</property>
	
	<!-- *********连接池配置*********** -->
	<!-- 配置连接池驱动管理类 -->
	<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
	<!-- 配置连接池参数信息 -->
	<property name="hibernate.c3p0.max_size">5</property>	<!-- 最大连接数 -->
	<property name="hibernate.c3p0.min_size">2</property>	<!-- 最小连接数 -->
	<property name="hibernate.c3p0.timeout">5000</property>	<!-- 超时时间 -->
	<property name="hibernate.c3p0.max_statements">100</property>	<!-- 最大执行的命令格个数 -->
	<property name="hibernate.c3p0.idle_test_period">30000</property> <!-- 空闲测试时间 -->
	<property name="hibernate.c3p0.acquire_increment">2</property>	<!-- 连接不够用时,每次增加的个数 -->
	<!-- 
		#hibernate.c3p0.max_size 2
		#hibernate.c3p0.min_size 2
		#hibernate.c3p0.timeout 5000
		#hibernate.c3p0.max_statements 100
		#hibernate.c3p0.idle_test_period 3000
		#hibernate.c3p0.acquire_increment 2
		#hibernate.c3p0.validate false
	 -->
	 
</session-factory>
2)hibernate使用C3P0连接池,除了hibernate的jar包,当然还要导入C3P0jar包了(如:c3p0-0.9.1.2.jar),否则报错.

JDBC配置连接池 示例C3p0

try{  
            ComboPooledDataSource source = new ComboPooledDataSource();  
            source.setDriverClass("com.mysql.jdbc.Driver");  
            source.setJdbcUrl("jdbc:mysql:///day11");  
            source.setUser("root");  
            source.setPassword("root");  
              
            conn = source.getConnection();  
            ps = conn.prepareStatement("select * from account");  
            rs = ps.executeQuery();  
            while(rs.next()){  
                String name = rs.getString("name");  
                System.out.println(name);  
            }  
        }catch (Exception e) {  
            e.printStackTrace();  
        }finally{  
            if(rs!=null){  
                try {  
                    rs.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }finally{  
                    rs = null;  
                }  
            }  
            if(ps!=null){  
                try {  
                    ps.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }finally{  
                    ps = null;  
                }  
            }  
            if(conn!=null){  
                try {  
                    conn.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }finally{  
                    conn = null;  
                }  
            }  
        }  
    }  

第二种方式 创建出c3p0的配置文件 然后加载

<?xml version="1.0" encoding="utf-8"?>  
<c3p0-config>  
  <default-config>  
    <property name="driverClass">com.mysql.jdbc.Driver</property>  
    <property name="jdbcUrl">jdbc:mysql:///c3p0test</property>  
    <property name="user">root</property>  
    <property name="password">root</property>  
  </default-config>  
  <named-config name="mysql2">   
    <property name="driverClass">com.mysql.jdbc.Driver</property>  
    <property name="jdbcUrl">jdbc:mysql:///c3p0test1</property>  
    <property name="user">root</property>  
    <property name="password">root</property>  
  </named-config>  

C3p0的使用较为简单,通常来说只要在src目录下添加一个c3p0的配置文件,在程序中使用一句代码

1)ComboPooledDataSource source = new ComboPooledDataSource()使用配置文件中的默认配置,或者

2)ComboPooledDataSource source = new ComboPooledDataSource(“配置文件中name-config的名称”)使用配置文件中的其他配置

第二种连接池的创建DBCP

一、导包

Apache官网下载DBCP包,导入两个包路径如下:

commons-dbcp-1.4-bin\commons-dbcp-1.4\commons-dbcp-1.4.jar:连接池的实现

commons-pool-1.5.6-bin\commons-pool-1.5.6\commons-pool-1.5.6.jar:连接池实现的依赖库

CSDN上jar包的下载地址:http://download.csdn.net/detail/u012802702/9491642
二、代码示例:
方式一:使用BasicDataSource 通过方法设置连接参数。

//获取BasicDataSource并配置,开始....  
        BasicDataSource source = new BasicDataSource();  
    source.setDriverClassName("com.mysql.jdbc.Driver");  
    source.setUrl("jdbc:mysql:///dbcptest");  
    source.setUsername("root");  
    source.setPassword("root");  
//获取BasicDataSource并配置,结束......  
    try {  
            conn = source.getConnection();  
            ps = conn.prepareStatement("select * from account");  
            rs = ps.executeQuery();  
            while (rs.next()) {  
                String name = rs.getString("name");  
                System.out.println(name);  
            }   
     } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            if (rs != null) {  
                try {  
                    rs.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                } finally {  
                    rs = null;  
                }  
            }  
            if (ps != null) {  
                try {  
                    ps.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                } finally {  
                    ps = null;  
                }  
            }  
            if (conn != null) {  
                try {  
                    conn.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                } finally {  
                    conn = null;  
                }  
            }  
        }  

方式二:使用BasicDataSourceFactory +配置文件

try {               //获取并配置DataSource开始  
        Properties prop = new Properties();  
        prop.load(new FileReader("dbcp.properties"));  
        BasicDataSourceFactory factory = new BasicDataSourceFactory();  
        DataSource source = factory.createDataSource(prop);  
    //获取并配置DataSource,结束  
        conn = source.getConnection();  
        ps = conn.prepareStatement("select * from account");  
        rs = ps.executeQuery();  
        while (rs.next()) {  
            String name = rs.getString("name");  
            System.out.println(name);  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        if (rs != null) {  
            try {  
                rs.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } finally {  
                rs = null;  
            }  
        }  
        if (ps != null) {  
            try {  
                ps.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } finally {  
                ps = null;  
            }  
        }  
        if (conn != null) {  
            try {  
                conn.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } finally {  
                conn = null;  
            }  
        }  
    }  

#连接设置

  driverClassName=com.mysql.jdbc.Driver  
    url=jdbc:mysql://localhost:3306/jdbc  
    username=root  
    password=  
       
#<!-- 初始化创建的连接数,当不够时再去创建 -->  
initialSize=10  
   
#最大连接数量,连接数连不能超过该值  
maxActive=50  
   
#<!-- 最大空闲连接,当空闲连接超过该值时就挨个关闭多余的连接,但不能小于minldle -->  
maxIdle=20  
   
#<!-- 最小空闲连接,空闲连接的最下值 -->  
minIdle=5  
   
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒,当连接超过该时间便认为其实空闲连接 -->  
maxWait=60000  
   
   
#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]   
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。  
connectionProperties=useUnicode=true;characterEncoding=gbk  
   
#指定由连接池所创建的连接的自动提交(auto-commit)状态。  
defaultAutoCommit=true  
   
#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。  
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE  
defaultTransactionIsolation=READ_UNCOMMITTED  

还有一种就是tomcat内置数据源(暂未深了解)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值