数据连接池
概念
可以看成是一个容器(集合),存放多个数据连接。当系统初始化后,容器被创建,申请连接多个对象来放进容器,当用户访问数据库时,可以从容器中获取连接对象,使用完后归还连接对象到容器中。
优点:节省资源,提高访问效率。
实现:
标准接口: javax.sql包下的DataSource
方法: 获取连接: getConnection()
归还连接: Connection.close()
技术: 1.C3P0:数据库连接池技术
2.Druid:数据库连接池技术,阿里巴巴
C3P0
步骤:
1.导入jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar //还有驱动jar包
2.定义配置文件
名称: c3p0.properties 或者 c3p0-config.xml
路径:直接将文件放在src目录下
3.创建 数据库连接池对象 ComboPooledDataSource
DataSource ds = new ComboPooledDataSource();
4.获取连接:getConnection
Connection conn = ds.getConnection();
Druid
步骤:
1.导入jar包 druid-1.0.9.jar
2.定义配置文件:
可以是任意名称,任意路径
properties形式
3.加载配置文件 Properties
Properties pro = new Properties();
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
4.获取数据库连接池对象 工厂获取
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
5.获取连接
Connection conn = ds.getConnection();
Druid工具类
定义一个工具类JDBCUtils,提供静态代码块来加载配置文件,初始化连接池对象,提供方法(获取连接方法,释放对象,获取连接池方法)
public class JDBCUtils {
//1.定义成员变量 DataSource ds
private static DataSource ds ;
static{
try {
//1.加载配置文件
Properties pro = new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.获取DataSource ds
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 释放资源
* 进行方法的重载
*/
public static void close(Statement stmt,Connection conn){
close(null,stmt,conn);
}
public static void close(ResultSet rs , Statement stmt, Connection conn){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();//归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池方法
*/
public static DataSource getDataSource(){
return ds;
}
}
Spring JDBC
Spring框架对JDBC进行简单封装,提供了一个JDBCTemplate对象来简化JDBC的开发
步骤:
1.导入jar包
2.创建jdbcTemplate对象 //依赖于DataSource数据源
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
3.调用JdbcTemplate的方法来完成增删改查的操作
update():执行DML语句 //增、删、改
query():查询结果,将结果封装为JavaBean对象,一般使用 BeanPropertyRowMapper实现类完成javaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
queryForMap():查询结果,将结果集封装成map集合,列名为key,值为value,将这条记录封装为一个map集合 //结果集长度只能是1
queryForList():查询结果,将结果集封装为list集合 //将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
queryForObject:查询结果,将结果封装为对象 //一般用于聚合函数的查询