DataSource又称为数据源,该类的目的是为了防止使用数据库时不必要操作带来的资源浪费,使用数据库时需要进行数据库连接,才可以使用数据库,使用数据库后,又要断开链接,用来释放资源。链接数据库和断开数据库连接浪费资源,而且在频繁操作数据库的时候,如果按照没有数据源的方式进行使用,就要频繁的连接数据库,断开数据库连接,做了很多没有必要的操作,即耽误时间,又浪费资源。
那么数据源是怎么做到不浪费资源的呢?
首先数据源先创建了一个数据库连接池,里面可以自己自由设计数据库连接池中连接的数量,当使用连接的时候直接在数据库连接池中获取,当不使用连接的时候不用断开,直接放到数据库连接池中,这就像是可回收垃圾一样,用完进行回收,可再度利用,不会浪费资源。
那么有人又想问,那么多连接放在连接池中,一直处于连接状态,是不是也是浪费资源呢?其实这是浪费资源的,但是咱们可以根据具体状况来设定数据库连接池中的连接数量,用来减少数据库连接所带来的资源浪费。
所以在创建数据源的时候会有许多的参数,在这里就不详细介绍了,在代码里在进行详细的说明,每个参数的作用。
首先创建一个数据库连接池。
在创建数据库连接池的时候,咱们必须要导入数据库连接池的jar包,目前咱们暂时采用Apache公司提供的jar包进行测试,具体jar包下载位置,如果有人要可以在下面留言,也可以去官方网站进行下载,具体类为BasicDataSource。
代码如下:
import org.apache.commons.dbcp.BasicDatasource;
import javax.sql.DataSource;
public class DBCPUtils{
private static final String DRIVERNAME ="com.mysql.jc.jdbc.Driver";
private static final String URL = "job:mysql://localhost:3306/acompe";
private static final String USER = "root";
private static final String PASSWORD = "root";
private static BasicDataSource dataSource = new BasicDataSource();
static{
dataSource.setDriverClassName(DRIVERNAME);
dataSource.setUrl(URL);
dataSource.setUsername(USER);
dataSource.setPassword(PASSWORD);
dataSource.setMaxActive(20); //设置最大连接数
dataSource.setInitialSize(10); //设置初始化连接数
dataSource.setMaxIdel(8); //当空闲下载的时候,连接最大数量
dataSource.setMinIdle(5); //当空闲时间过长后,变为最小空闲
}
public static Datasource getDataSource(){
return dataSource;
}
}
代码中,变量全部定义为static,并且定义静态代码块,当有程序调用该函数的时候,首先初始化静态代码块,直接就可以生成静态的dataSource,每次都可以直接通过该类获取到数据源,那么数据源获取到之后,就可以通过数据源获取连接了。