- 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; }