java流行使用开源的数据库连接池DBCP

  • DBCP

 流行使用开源的数据库连接池

DBCP (DataBase Connection Pool) 是 apache 上的一个

java 连接池项目.

由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

DBConnection


import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

/**

 * 封装数据库连接类

 * @author Administrator

 *

 */

public class DBConnection {

private static final String NAME="root";//定义一个name常量将数据库用户名作为字符串初值赋值

private static final String PASSWORD="root";//定义一个psw常量将数据库密码作为字符串初值赋值

private static final String URL="jdbc:mysql://localhost:3306/his";//定义一个URL常量将连接数据库字符串作为字符串初值赋值可以myeclipse中找到

private static final String DRIVER="com.mysql.jdbc.Driver";//定义一个静态的driver常量将mysql数据库驱动地址作为字符串初值赋值可以myeclipse中找到

public static Connection getConn(){

BasicDataSource bds=new BasicDataSource();

//手动方式设置

bds.setDriverClassName(DRIVER);

bds.setUrl(URL);

bds.setUsername(NAME);

bds.setPassword(PASSWORD);

//获取Data

Connection conn=null;

try { conn = bds.getConnection(); } catch (SQLException e) {

e.printStackTrace(); }

return conn; }

}

bds.setInitialSize(20);//初始创建多少个连接

bds.setMaxActive(10);//最大同时连接数

bds.setMaxIdle(10);//最大空闲数

bds.setMinIdle(5);//最小空闲数

加载properties文件 方式

ResourceBundle rb=ResourceBundle.getBundle("mydb");

NAME=rb.getString("dbname");

PASSWORD=rb.getString("dbpassword");

URL=rb.getString("dburl");

DRIVER=rb.getString("dbdriver");



C3P0

C3P0
 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。





package com.zrgk.jdbc.db;



import java.beans.PropertyVetoException;

import java.sql.Connection;

import java.sql.SQLException;



import com.mchange.v2.c3p0.ComboPooledDataSource;

/**

 * 封装数据库连接类

 * @author Administrator

 *

 */

public class DBConnection {

private static final String NAME="root";//定义一个name常量将数据库用户名作为字符串初值赋值

private static final String PASSWORD="root";//定义一个psw常量将数据库密码作为字符串初值赋值

private static final String URL="jdbc:mysql://localhost:3306/his";//定义一个URL常量将连接数据库字符串作为字符串初值赋值可以myeclipse中找到

private static final String DRIVER="com.mysql.jdbc.Driver";//定义一个静态的driver常量将mysql数据库驱动地址作为字符串初值赋值可以myeclipse中找到

public static Connection getConn(){

//手动方式设置

try {

cpds.setDriverClass(DRIVER);

cpds.setJdbcUrl(URL);

cpds.setUser(NAME);

cpds.setPassword(PASSWORD);

} catch (PropertyVetoException e1) {e1.printStackTrace();}

Connection conn=null;

try { conn = cpds.getConnection(); } catch (SQLException e) {

e.printStackTrace(); }

return conn; }

}



加载文件方式(c3p0支持加载 properties 也支持加载 xml文件)

<c3p0-config> 

  <default-config>  

    <property name="user">root</property> 

    <property name="password">root</property> 

    <property name="driverClass">com.mysql.jdbc.Driver</property> 

    <property name="jdbcUrl">jdbc:mysql://localhost:3306/his</property> 

    <property name="initialPoolSize">10</property> 

    <property name="maxIdleTime">30</property> 

    <property name="maxPoolSize">100</property> 

    <property name="minPoolSize">10</property> 

    </default-config> 



    <named-config name="myApp"> 

    <property name="user">root</property> 

    <property name="password">root</property> 

    <property name="driverClass">com.mysql.jdbc.Driver</property> 

    <property name="jdbcUrl">jdbc:mysql://localhost:3306/his</property> 

     

    <property name="initialPoolSize">10</property> 

    <property name="maxIdleTime">30</property> 

    <property name="maxPoolSize">100</property> 

    <property name="minPoolSize">10</property> 

  </named-config> 

</c3p0-config> 

private static ComboPooledDataSource cpds = new ComboPooledDataSource("myApp");



JNDI: (Java Naming and Directory Interface)

                 Java 命名 和 目录 接口





<Resource name="jndi/mybatis" auth="Container" type="javax.sql.DataSource"

               maxActive="100" maxIdle="30" maxWait="10000"

               username="root" password="root" driverClassName="com.mysql.jdbc.Driver"

               url="jdbc:mysql://localhost:3306/his"/>



public static Connection getConn(){

  DataSource ds=null;Connection conn=null;

try {

Context context = new InitialContext();

ds = (DataSource) context.lookup("java:/comp/env/jndi/mybatis");

} catch (NamingException e1) { e1.printStackTrace(); }

try { conn = ds.getConnection(); } catch (SQLException e) {

e.printStackTrace(); }

return conn; }



猜你喜欢

转载自blog.csdn.net/weixin_40986713/article/details/107877729