失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > JDBC系列(九):JDBC与数据库连接池(Druid-德鲁伊)使用步骤

JDBC系列(九):JDBC与数据库连接池(Druid-德鲁伊)使用步骤

时间:2018-09-30 03:55:50

相关推荐

JDBC系列(九):JDBC与数据库连接池(Druid-德鲁伊)使用步骤

目录

1.导语(唠唠嗑~~~)2.使用数据库连接池好处3.Druid数据库连接池创建与使用步骤3.1.创建连接池的步骤3.2使用Druid数据库连接池的步骤 4.关闭资源与归还至连接池的一点说明

1.导语(唠唠嗑~~~)

Druid德鲁伊是阿里巴巴出品的一个数据库连接池,结合了DBCP、C3P0、PROXOOL等数据库连接池的优点,同时添加了日志监控功能,可以很好的监控D数据库连接池和SQL的执行情况,可以说是市场上目前性价比超高、超好用的数据库连接池。作为国人,我们应为之感到骄傲。

使用连接池,在编码上,仅仅是改变了Java程序连接数据库这一连接部分,之前是JDBC直连数据库,且运行一次程序就连接一次数据库,最重要的,每次连接数据库,就要耗费较多资源,拿钱做比喻的话,就是很烧钱!!!

程序员和资本家们,当然不能这样搞烧钱的事。

你还别说,一群比较有头脑的人,发明了一种东西—数据库连接池

简而言之,数据库连接池出现的原因,就是为了避免烧钱

2.使用数据库连接池好处

但这里还是有必要说一下,数据库连接池的好处:

连接资源重用系统的响应速度更快属于一种新的资源分配的手段(以前我们是从数据库服务器直接获取连接实现交互。现在我们只需要从连接池中拿连接,用完了,再放回连接池即可,而不必大费周章的去直接连接数据库)避免服务器(一言不合就)宕机(——“不好了,老板,服务器挂了,已经有很多用户再投诉了!!!” ——“扣你工资!”)

上面已经提到,数据库连接池,相比传统直连数据库的程序编写步骤,仅仅在连接数据库方面有区别,这里仅仅对这部分做一下说明。

数据库连接池连接到数据库有两种方式,

3.Druid数据库连接池创建与使用步骤

下载jar包,自己去Web找吧

将jar文件添加到classpath中

添加配置文件druid.properties

jdbcUrl = jdbc:mysql://localhost:3306/testusername = rootpassword = 88888888initialSize = 5maxActive = 20minActive = 5maxWait = 3000

编写程序获取数据源对象

数据源对象:java.sql.DataSource接口对象,表示数据源,可以直接理解为连接池。

所有的连接池都会有一个数据源实现这个接口。

Druid实现这个数据源的类是:DruidDataSource

3.1.创建连接池的步骤

创建Druid数据库连接池步骤与程序(4步):

准备:我们自己可以根据需要写一个配置文件,这里命名为druid.properties。

jdbcUrl = jdbc:mysql://localhost:3306/testusername = rootpassword = 88888888initialSize = 5maxActive = 20minIdle = 5maxWait = 3000

自行导入druid的jar,并buildpath加载步骤0中的配置文件druid.properties。创建数据源对象设置属性获取连接

//1.创建连接池//1.加载配置文件Properties pro = new Properties();pro.load(DruidTest.class.getClassLoader().getResourceAsStream("druid.properties"));//2.创建数据源对象/*DataSource:是SUN公司声明的接口 。DruidDataSource:是阿里巴巴对应实现的类*/DataSource dataSource = new DruidDataSource();//3.设置属性DruidDataSource ds = (DruidDataSource)dataSource;ds.setUrl(pro.getProperty("jdbcUrl"));ds.setUsername(pro.getProperty("username"));ds.setPassword(pro.getProperty("password"));ds.setInitialSize(new Integer(pro.getProperty("initialSize")));ds.setMaxActive(new Integer(pro.getProperty("maxActive")));ds.setMinIdle(new Integer(pro.getProperty("minIdle")));ds.setMaxWait(new Long(pro.getProperty("maxWait")));//4.获取连接。 此时就可以直接通过数据源获取可用的连接Connection conn = ds.getConnection();System.out.println(conn);//检验是否能够成功拿到一个数据库连接池中的连接

3.2使用Druid数据库连接池的步骤

使用连接池操作数据库的使用完整过程与程序:

package com.jdbc;import com.alibaba.druid.pool.DruidDataSource;import javax.sql.DataSource;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.Properties;public class DruidTest {public static void main(String[] args) throws IOException, SQLException {//1.创建连接池//1.加载配置文件Properties pro = new Properties();pro.load(DruidTest.class.getClassLoader().getResourceAsStream("druid.properties"));//2.创建数据源对象/*DataSource:是SUN公司声明的接口 。DruidDataSource:是阿里巴巴对应实现的类*/DataSource dataSource = new DruidDataSource();//3.设置属性DruidDataSource ds = (DruidDataSource)dataSource;ds.setUrl(pro.getProperty("jdbcUrl"));ds.setUsername(pro.getProperty("username"));ds.setPassword(pro.getProperty("password"));ds.setInitialSize(new Integer(pro.getProperty("initialSize")));ds.setMaxActive(new Integer(pro.getProperty("maxActive")));ds.setMinIdle(new Integer(pro.getProperty("minIdle")));ds.setMaxWait(new Long(pro.getProperty("maxWait")));//4.拿连接。直接通过数据源获取可用的连接Connection conn = ds.getConnection();//System.out.println(conn);//检验是否能够成功拿到一个数据库连接池中的连接//2.编写sql语句String sql = "INSERT INTO test1 VALUES (NULL,\"张四丰\")";//3.PreparedStatementPreparedStatement pst = conn.prepareStatement(sql);//4.执行sqlpst.executeUpdate();//5.直接关闭资源即可,conn.close();pst.close();}}

4.关闭资源与归还至连接池的一点说明

关于第5步的直接关闭资源。事实上,数据源返回的连接和我们使用DriverManager获得连接是不同的,理论上说数据源返回的连接应该是我们自己通过DriverManager获取的练级的代理对象,代理对象修改了原生对象的一部分功能,特别是close方法。

代理Cnnection的close方法实际操作是:首先判断池中是否有过多的空闲连接,如果超过了最大的空闲连接数,close会自动关闭连接,并且将这个连接对象从池中排除。

如果池中的空闲连接数量并不大于最大空闲连接数量,就不会关闭连接,二十标记为空闲状态,几乎所有的连接池都是这样的。

如果觉得《JDBC系列(九):JDBC与数据库连接池(Druid-德鲁伊)使用步骤》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。