mysql 连接池 。close无效_连接池

2791bf3cf3e28af85b1e53f08d4684a3.png

1.遇到的问题-引出连接池

0d356deacc2195a991a2fe04c7cbe72f.png

2.连接池思想

f7eefcf04f6baa700c1c37a076d9049d.png

3.连接池的概述

在Java中,连接池使用javax.sql.DataSource接口来表示连接池.

注意:DataSource仅仅只是一个接口,由各大服务器厂商来实现(Tomcat.JBoss).

常用的DataSource的实现:

(1).DBCP: Spring推荐的, Apache 组织(基金会)

(2).C3P0: Hibernate推荐的

(3).Druid : (德鲁伊)阿里巴巴开源的,性能最好,速度最快

DataSource(数据源)和连接池(Connection Pool)是同一个.

4.使用连接池和不使用连接池的区别在哪里

从代码上:

不使用连接池: Conenction对象由DriverManager获取.

 Connection conn = DriverManager.getConnection(url,username,password);

使用连接池:

如何创建DataSource对象,如何在DataSource中设置url,账号,密码.

 Connection conn = DataSource对象.getConnection();

使用连接池的时候:

释放资源: Connection对象.close():是把Connection放回给连接池,而不是和数据库断开.

5.Druid连接池的使用

(1).准备druid 连接池jar包到项目

dfd486363a89e346449957112750b3df.png

(2).测试代码

package com.lin.datasource.test;

import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

import javax.sql.DataSource;

import org.junit.Test;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

public class DataSourceTest {
	@Test
	public void testDataSource() throws Exception {
		// 1.创建连接池对象
		DruidDataSource ds = new DruidDataSource();
		// 2.设置连接数据库的账号密码
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		ds.setUrl("jdbc:mysql://localhost:3306/mybatis");
		ds.setUsername("root");
		ds.setPassword("root");
		ds.setMaxActive(10);// 最大连接数
		// 3.获取连接对象
		Connection conn = ds.getConnection();
		System.out.println(conn);
		ds.close();

	}

	// 使用工厂对象创建连接池对象,工厂对象的好处,不需要直接设置账号密码等等,只需要将
	// 连接数据库的账号密码等等以指定的 key的名称配置到 xxx.properties文件中即可,工厂对象底层自动读取

	@Test
	public void testDataSourceByFactory() throws Exception {
		// 1.获取类加载器用于加载clsspath下面的 配置文件
		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
		// 2.读取druid.properties配置文件
		InputStream inputStream = classLoader.getResourceAsStream("druid.properties");
		// 3.创建Properties对象,并读取配置文件对应的输入流
		Properties p = new Properties();
		p.load(inputStream);

		// 4.创建连接池对象
		DataSource ds = DruidDataSourceFactory.createDataSource(p);
		// 5.获取连接对象
		Connection conn = ds.getConnection();
		System.out.println(conn);

	}
}

druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root
maxActive=10

57ee19c36dca1d02ccc38a887f34709e.png

(3).结果

76168ba96b09888ee6c57f74008839bb.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值