DataSource Java 官方 DBCP

DBCP使用的比较少, 大多用 c3p0

c3p0与dbcp区别

dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能

基础使用, DBCP是用连接池实现的

		BasicDataSource basicDataSource = new BasicDataSource();

		basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");

		basicDataSource.setUrl("jdbc:mysql://127.0.0.1/mydb");
		basicDataSource.setUsername("root");
		basicDataSource.setPassword("root");

		basicDataSource.setMaxActive(3);

		try {
			Connection connection1 = basicDataSource.getConnection();
			Connection connection2 = basicDataSource.getConnection();
			Connection connection3 = basicDataSource.getConnection();

			System.out.println(connection1.hashCode());
			System.out.println(connection2.hashCode());
			System.out.println(connection3.hashCode());

			connection3.close();

			Connection connection4 = basicDataSource.getConnection();

			System.out.println(connection4.hashCode()); // 输出同3

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


可以使用属性文件创建datasource

	public void testProperties() {

		Properties properties = new Properties();

		try {
			properties.load(DBCPTest.class
					.getResourceAsStream("jdbc.properties"));
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		try {
			BasicDataSource basicDataSource = (BasicDataSource) BasicDataSourceFactory
					.createDataSource(properties);

			System.out.println(basicDataSource.getConnection());
			//输出 : jdbc:mysql://127.0.0.1:3306/mysql, UserName=root@localhost, MySQL-AB JDBC Driver

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

属性对应设置方法, 源代码中对应

    private final static String PROP_DEFAULTAUTOCOMMIT = "defaultAutoCommit";
    private final static String PROP_DEFAULTREADONLY = "defaultReadOnly";
    private final static String PROP_DEFAULTTRANSACTIONISOLATION = "defaultTransactionIsolation";
    private final static String PROP_DEFAULTCATALOG = "defaultCatalog";
    private final static String PROP_DRIVERCLASSNAME = "driverClassName";
    private final static String PROP_MAXACTIVE = "maxActive";
    private final static String PROP_MAXIDLE = "maxIdle";
    private final static String PROP_MINIDLE = "minIdle";
    private final static String PROP_INITIALSIZE = "initialSize";
    private final static String PROP_MAXWAIT = "maxWait";
    private final static String PROP_TESTONBORROW = "testOnBorrow";
    private final static String PROP_TESTONRETURN = "testOnReturn";
    private final static String PROP_TIMEBETWEENEVICTIONRUNSMILLIS = "timeBetweenEvictionRunsMillis";
    private final static String PROP_NUMTESTSPEREVICTIONRUN = "numTestsPerEvictionRun";
    private final static String PROP_MINEVICTABLEIDLETIMEMILLIS = "minEvictableIdleTimeMillis";
    private final static String PROP_TESTWHILEIDLE = "testWhileIdle";
    private final static String PROP_PASSWORD = "password";
    private final static String PROP_URL = "url";
    private final static String PROP_USERNAME = "username";
    private final static String PROP_VALIDATIONQUERY = "validationQuery";
    private final static String PROP_VALIDATIONQUERY_TIMEOUT = "validationQueryTimeout";














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值