Druid数据库连接池介绍-17页PPT资料
- 格式:pptx
- 大小:647.83 KB
- 文档页数:17
druid数据库连接池使用手册摘要:1.简介2.安装与配置3.连接Druid数据库连接池4.Druid数据库连接池的使用5.高级配置6.最佳实践7.常见问题及解决方案正文:Druid数据库连接池使用手册=============================简介----Druid是一个数据库连接池,它能够提供高效的、可扩展的、稳定的数据库连接管理。
本文将介绍如何使用Druid数据库连接池。
安装与配置------------在使用Druid数据库连接池之前,首先需要确保你的项目中已经添加了Druid的依赖。
具体依赖信息请参考项目的构建工具(如Maven或Gradle)。
连接Druid数据库连接池-----------------------1.创建DruidDataSource实例在项目中创建一个DruidDataSource实例,用于与数据库进行交互。
以下是一个创建DruidDataSource的示例代码:```javaimport com.alibaba.druid.pool.DruidDataSource;public class DruidDataSourceExample {public static void main(String[] args) {DruidDataSource dataSource = new DruidDataSource();}}```2.配置DruidDataSource在创建DruidDataSource实例后,需要对其进行配置,包括数据库URL、用户名、密码等。
以下是一个配置DruidDataSource的示例代码:```javadataSource.setUrl("jdbc:mysql://localhost:3306/test");dataSource.setUsername("root");dataSource.setPassword("123456");```3.配置Druid数据库连接池Druid提供了多种数据库连接池配置方式,包括:- com.alibaba.druid.pool.DruidDataSource:默认的数据源配置类。
druid数据库连接池使用手册一、Druid简介Druid是一款高性能、稳定、安全的Java数据库连接池。
它提供了强大的监控和配置功能,使得开发者能够轻松地管理和优化数据库连接。
Druid起源于DBCP,在其基础上进行了大量优化,成为了一款优秀的数据库连接池产品。
二、Druid的核心特性1.高效性能:Druid通过使用直接内存、连接池复用、懒加载等技术,提高了连接池的性能。
2.安全可靠:Druid对数据库连接进行了加密处理,防止了SQL注入等安全问题。
3.强大的监控:Druid提供了丰富的监控功能,包括连接数、空闲连接、错误连接等,方便开发者实时了解连接池的状态。
4.灵活的配置:Druid提供了丰富的配置项,允许开发者根据实际需求进行定制。
三、Druid的使用方法1.添加依赖:在项目的pom.xml文件中添加Druid的依赖。
2.创建数据源:根据实际情况创建对应的数据源,配置数据库连接参数。
3.使用连接:通过DataSource对象获取Connection连接,进行数据库操作。
4.关闭连接:操作完成后,使用Connection的close()方法关闭连接。
四、Druid的配置详解1.基本配置:包括数据库URL、用户名、密码等。
2.连接池配置:包括最大连接数、最小连接数、连接超时等。
3.监控配置:包括监控enabled、监控间隔等。
4.其他配置:包括加密密码、防止SQL注入等。
五、Druid的高级特性1.动态SQL:支持动态生成SQL,方便实现分页、查询条件等功能。
2.关联对象:支持将连接池中的Connection与Java对象关联,方便操作数据库。
3.异步事务:支持异步事务处理,提高系统并发能力。
六、Druid的实战应用1.应用场景:在实际项目中,Druid连接池可以应用于Web应用、大数据处理等领域。
2.优化策略:根据项目需求,合理配置Druid连接池,提高系统性能。
七、总结与建议Druid作为一款优秀的数据库连接池,值得开发者学习和使用。
Druid是一种Java语言编写的高效、可扩展的数据库连接池。
以下是Druid 数据库连接池的一些基本使用步骤。
请注意,这只是一个简要的介绍,更详细和具体的配置和使用细节需要根据你的具体项目和需求进行调整。
### 1. 引入Druid依赖在你的项目中引入Druid的依赖,可以通过Maven、Gradle等构建工具实现。
Maven:<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version></dependency>### 2. 配置数据源在项目的配置文件中配置Druid数据源,通常是在`application.properties` 或`application.yml` 文件中添加以下配置:spring:datasource:url: jdbc:mysql://localhost:3306/your_databaseusername: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource# Druid配置druid:initial-size: 5min-idle: 5max-active: 20max-wait: 60000time-between-eviction-runs-millis: 60000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: falsetest-on-return: falsepool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20filters: stat,wall,log4jconnection-properties:druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500这是一个基本的Druid数据源配置,其中包括了连接池的一些基本参数。
java数据库连接池DruidDruid是阿里巴巴的一个开源项目,据该网站称:Druid首先是一个数据库连接池。
Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。
Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
上述内容难免有水分,但是如果真如他所说Druid已经在阿里巴巴和淘宝等大型网站及系统上被充分使用及测试的话,那么Druid还是值得信赖的,毕竟任何有信誉公司不会拿这个去开玩笑。
Druid官网:Druid有以下几点优势或好处:•替换DBCP和C3P0。
Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
•可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
•数据库密码加密。
直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。
DruidDruiver和DruidDataSource都支持PasswordCallback。
•SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
•扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid 提供的Filter机制,很方便编写JDBC层的扩展插件。
看到上面的这些Druid的好处你是否已经心动了?下面就让我们一起来实验一下。
1.下载Druid(),目前Druid最新版本为0.2.23,可以选择源码,javadoc,jar等。
2.还是在之前举例的项目基础上添加Druid代码,代码其实很简单,把之前的c3p0改改就能用:Java代码1./**2.* Druid3.*/4.public void getUsrInfoWithDruid(Integer usrId) {5.String sql="SELECT * FROM USER u WHERE R_ID=" + usrId;6.7.try {8.//通过Map方式设置Druid参数9.Map<String, String> druidMap=new HashMap<String, St ring>();10.druidMap.put(DruidDataSourceFactory.PROP_USERNA ME, user);11.druidMap.put(DruidDataSourceFactory.PROP_PASSW ORD, passwd);12.druidMap.put(DruidDataSourceFactory.PROP_URL, jdb cUrl);13.druidMap.put(DruidDataSourceFactory.PROP_DRIVER CLASSNAME, driver);14.//通过DruidDataSourceFactory获取DataSource实例15.dataSource=DruidDataSourceFactory.createDataSourc e(druidMap);16.conn=dataSource.getConnection();17.Statement st=conn.createStatement();18.ResultSet result=st.executeQuery(sql);19.while(result.next()) {20.System.out.println("Druid:begin");21.System.out.println("Name:" + result.getString("NAME" ));22.System.out.println("Druid:end");23.}24.result.close();25.st.close();26.conn.close();27.} catch(Exception e) {28. e.printStackTrace();29.}30.}以上是利用Map方式向Druid传递参数,这种方式基本上用不到。
druid数据库连接池工作原理Druid数据库连接池工作原理在当今的软件开发中,数据库连接池扮演着至关重要的角色。
它们可以有效地管理数据库连接,提高应用程序的性能和响应速度。
而Druid数据库连接池作为一种优秀的数据库连接池实现,其工作原理更是备受关注。
让我们来了解一下Druid数据库连接池的基本结构。
Druid数据库连接池由几个主要组件组成,包括连接池管理器、连接对象、连接池监控和连接池状态等。
其中,连接池管理器负责管理连接对象的创建、分配和释放,连接对象则表示与数据库的实际连接。
连接池监控用于监控连接池的状态和性能指标,以便及时调整连接池的配置参数。
Druid数据库连接池的工作原理可以概括为以下几个步骤:1. 初始化连接池:在应用程序启动时,Druid连接池会根据配置参数初始化一定数量的数据库连接,并将它们存放在连接池中。
2. 请求连接:当应用程序需要与数据库交互时,它会向连接池请求一个数据库连接。
连接池会从连接池中选择一个空闲的连接对象分配给应用程序,并将其标记为“繁忙”。
3. 数据库操作:应用程序使用连接对象进行数据库操作,如查询、更新等。
一旦操作完成,应用程序需要及时释放连接对象,以便连接池可以重新利用该连接。
4. 连接归还:当应用程序释放连接对象时,连接池会将该连接对象重新标记为“空闲”,并使其可供其他应用程序使用。
5. 连接监控:Druid连接池会定期检查连接对象的状态,包括连接是否超时、是否空闲等。
如果发现异常连接,连接池会及时进行回收或重新创建,以确保连接池的稳定运行。
总的来说,Druid数据库连接池通过有效地管理数据库连接对象,实现了连接的复用和性能的优化。
它可以根据应用程序的需求动态调整连接池的大小,提高数据库访问效率,并且通过连接池监控功能,能够及时发现和处理连接池中的问题,确保应用程序的稳定运行。
在实际应用中,合理配置Druid数据库连接池的参数是非常重要的。
通过调整连接池的最大连接数、最小空闲连接数、连接超时时间等参数,可以有效地提高数据库访问性能,避免连接泄漏和性能瓶颈。
Druid介绍及配置1. Druid是什么?Druid是Java语⾔中最好的数据库连接池。
Druid能够提供强⼤的监控和扩展功能。
2. 在哪⾥下载druid正式版本下载:maven中央仓库:3. 怎么获取Druid的源码4. 怎么配置mavenDruid 0.1.18 之后版本都发布到maven中央仓库中,所以你只需要在项⽬的pom.xml中加上dependency就可以了。
例如:<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid-version}</version></dependency>5. 怎么打开Druid的监控统计功能6. 怎样使⽤Druid的内置监控页⾯7. 内置监控中的Web和Spring关联监控怎么配置?Web关联监控配置Spring关联监控配置8. 怎么配置防御SQL注⼊攻击9. Druid有没有参考配置10. 我想⽇志记录JDBC执⾏的SQL,如何配置11. 我的程序可能产⽣连接泄漏了,有什么办法?12. 在Druid中使⽤PSCache会有内存占⽤过⼤问题么?13. 有没有和其他数据库连接池的对⽐?各种数据库连接池对⽐14. 从其他连接池迁移要注意什么?不同连接池的参数参照对⽐:DBCP迁移15. Druid中有没有类似Jboss DataSource中的ExceptionSorter16. Druid中的maxIdle为什么是没⽤的?maxIdle是Druid为了⽅便DBCP⽤户迁移⽽增加的,maxIdle是⼀个混乱的概念。
连接池只应该有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分别相当于maxPoolSize和minPoolSize。
druid数据库连接池使用手册(最新版)目录1.Druid 数据库连接池简介2.Druid 的主要功能和特点3.Druid 的安装与配置4.Druid 的使用方法5.Druid 的优点与不足正文【1.Druid 数据库连接池简介】Druid 是一个高性能、易用、可扩展的数据库连接池,它支持多种数据库,如 MySQL、Oracle、PostgreSQL 等。
Druid 旨在简化数据库连接管理,提高系统性能和扩展性,降低开发和维护成本。
【2.Druid 的主要功能和特点】(1)高性能:Druid 通过多种技术提高性能,如连接复用、代理连接、预编译语句等。
(2)强大的连接管理:Druid 支持多种连接方式,如单数据库多表空间、多数据库、多用户、多协议等。
(3)灵活的配置:Druid 提供丰富的配置选项,可根据实际需求进行调整。
(4)可扩展性:Druid 支持插件式扩展,可根据需要添加或修改功能。
(5)监控与诊断:Druid 提供实时的监控数据和日志,方便开发者进行问题诊断和性能优化。
【3.Druid 的安装与配置】(1)下载与安装:从 Druid 官网下载最新版,解压后即可使用。
(2)配置:Druid 提供了配置文件和 API 两种方式进行配置。
配置文件位于`resources`目录下的`druid.properties`,可以根据需要修改。
API 方式通过编程进行配置。
【4.Druid 的使用方法】(1)获取连接:使用 Druid 提供的 API 获取数据库连接。
(2)使用连接:获取到的连接可用于执行 SQL 语句、事务处理等。
(3)关闭连接:使用完毕后,应关闭连接以释放资源。
【5.Druid 的优点与不足】(1)优点:性能高、易用性强、可扩展性好、支持多种数据库。
druid数据库连接池为什么连接池数并不是越⼤越好?第⼀点,⾸先我们要知道单核CPU“同时”运⾏多个线程,只不过是假象。
单核CPU同⼀时刻只能执⾏⼀个线程,然后操作系统切换上下⽂,CPU 核⼼快速调度,执⾏另⼀个线程的代码。
这其中便涉及到了⼤量上下⽂切换带来的额外性能损耗。
第⼆点,由上可知,⼀个N核⼼服务器,设置数据库连接数为N便能提供最优性能。
然⽽,实际情况会受到磁盘IO和⽹络IO的影响,在IO等待时间内,线程阻塞等待,CPU处于空闲状态。
因此,在线程处理I/O密集业务操作时,需要设置线程/连接数⽐CPU⼤⼀些,以提⾼吞吐量。
连接数的计算公式连接数 = ((核⼼数 * 2) + 有效磁盘数)服务器 CPU 是 4核 i7 的,连接池⼤⼩应该为 ((4 * 2) + 1) = 9 ~ 10个。
具体需要根据实际业务场景做调整。
业务场景对于并发访问,可以采⽤⼩的数据库连接池,然后将剩下的业务线程放在队列中等待。
如果系统中混合了长事务和短事务,正确的做法应该是创建两个连接池,⼀个服务于长事务,⼀个服务于"实时"查询,也就是短事务。
基本配置:datasource:url: jdbc:dm://127.0.0.1:5236/DMDB?zeroDateTimeBehavior=convertToNullusername: sysdbapassword: sysdba@123456driver-class-name: dm.jdbc.driver.DmDrivertype: com.alibaba.druid.pool.DruidDataSourceinitialSize: 10minIdle: 10maxActive: 20maxWait: 60000# 多久进⾏⼀次连接是否空闲的检查;保证最⼩连接数的前提下,如果空闲时间超过minEvictableIdleTimeMillis则直接关闭timeBetweenEvictionRunsMillis: 60000# ⼀个连接的最⼤空闲时间, 查过这个空闲时间就会被关闭minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: true# 设置从连接池获取连接时是否检查连接有效性,true时,每次都检查;false时,不检查testOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: truefilters: stat,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500。
数据库连接池(Druid的简单使⽤)不仅是⼀个数据库连接池,还包含⼀个ProxyDriver、⼀系列内置的JDBC组件库、⼀个SQL Parser。
⽀持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。
使⽤步骤⼀定要导⼊jar架包。
要配置好⽂件,如果不配置⽂件,记得在程序中⾃⾏添加。
1. 导⼊jar包: druid-1.0.9.jar、mysql-connector-java-5.1.48.jar2. 定义配置⽂件:可以命名为druid-1.0.9.propertiesdriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://MySQL地址/数据库名username=⽤户名password=密码initialSize=初始化连接数maxActive=最⼤连接数maxWait=最⼤等待时间(毫秒为单位)3. 加载配置⽂件druid-1.0.9.properties4. 获取连接池对象5. 获取数据库连接举例如下:package my.view.datasource.druid;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.io.InputStream;import java.sql.Connection;import java.util.Properties;public class DruidDemo {public static void main(String[] args) throws Exception {// 获取加载配置⽂件的对象Properties properties = new Properties();// 获取类的类加载器ClassLoader classLoader = DruidDemo.class.getClassLoader();// 获取druid-1.0.9.properties配置⽂件资源输⼊流InputStream resourceAsStream = classLoader.getResourceAsStream("druid-1.0.9.properties");// 加载配置⽂件properties.load(resourceAsStream);// 获取连接池对象DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);// 获取数据库连接对象Connection connection = dataSource.getConnection();// 打印获取到的数据库连接对象地址值System.out.println(connection);}}定义⼀个创建数据库连接池对象的类在使⽤数据库连接池的时候,我们不可能说每次都如上例中的情况⾃⼰写⼀遍吧。
Druid数据库连接池Druid简介Druid是阿里巴巴的一个开源数据库连接池,基于Apache 2.0协议,可以免费自由使用。
但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。
Druid能够提供强大的监控和扩展功能。
但Druid只支持JDK 6以上版本,不支持JDK 1.4和JDK 5.0。
Druid下载:maven中央仓库: /maven2/com/alibaba/druid/FAQ:https:///alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE% E9%A2%98源代码下载地址:https:///alibaba/druidDruid支持的数据库Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。
Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。
Druid基本配置Druid数据库连接池的配置与传统的DBCP、C3P0、Proxool等数据连接池的配置基本相同,下面以使用了Spring的项目为例配置Druid数据库连接池。
1.在上述的Druid下载路径中下载最新的Druid jar包,目前最新的为druid-1.0.2.jar2.打开项目中的spring配置文件applicationContext.xml 文件,加入如下配置<!-- 配置Druid连接池 --><bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"><!-- 基本的url、user、password配置 --><property name="url"value="jdbc:mysql://localhost:3306/cendev?useUnicode=true&charac terEncoding=utf8"></property><property name="username"value="root"></property><property name="password"value="mysql"></property><!-- 配置大小、最大、最小、超时时间--><property name="maxActive"value="100"/><property name="initialSize"value="1"/><property name="maxWait"value="3600000"/><property name="minIdle"value="30"/><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000"/><property name="validationQuery" value="select CURRENT_DATE"/> <property name="testWhileIdle" value="true"/><property name="testOnBorrow" value="false"/><property name="testOnReturn" value="false"/><!-- 打开PSCache,并且指定每个连接上PSCache的大小 --><property name="poolPreparedStatements" value="true"/><property name="maxPoolPreparedStatementPerConnectionSize"value="20"/><!-- 配置防御SQL注入的filters、监控统计拦截的filters --><property name="filters"value="wall,stat"/><!-- 连接泄露(未关闭)检测 removeAbandoned开启会对性能造成影响,怀疑有泄露情况再打开--><property name="removeAbandoned" value="true"></property><!-- 超时关闭时间 1800秒,即30分钟。
Druid连接池的使⽤Druid简介Druid是阿⾥开源的数据库连接池,作为后起之秀,性能⽐dbcp、c3p0更⾼,使⽤也越来越⼴泛。
当然Druid不仅仅是⼀个连接池,还有很多其他的功能。
druid的优点⾼性能。
性能⽐dbcp、c3p0⾼很多。
只要是jdbc⽀持的数据库,druid都⽀持,对数据库的⽀持性好。
并且Druid针对oracle、mysql做了特别优化。
提供监控功能。
可以监控sql语句的执⾏时间、ResultSet持有时间、返回⾏数、更新⾏数、错误次数、错误堆栈等信息,来了解连接池、sql语句的⼯作情况,⽅便统计、分析SQL的执⾏性能Druid的使⽤添加druid的依赖、数据库驱动<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.8</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency>纯代码⽅式 //数据源配置DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl("jdbc:mysql://127.0.0.1/db_student?serverTimezone=UTC");dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); //这个可以缺省的,会根据url⾃动识别dataSource.setUsername("root");dataSource.setPassword("abcd");//下⾯都是可选的配置dataSource.setInitialSize(10); //初始连接数,默认0dataSource.setMaxActive(30); //最⼤连接数,默认8dataSource.setMinIdle(10); //最⼩闲置数dataSource.setMaxWait(2000); //获取连接的最⼤等待时间,单位毫秒dataSource.setPoolPreparedStatements(true); //缓存PreparedStatement,默认falsedataSource.setMaxOpenPreparedStatements(20); //缓存PreparedStatement的最⼤数量,默认-1(不缓存)。
Druid是Java应用程序的JDBC连接池和数据库连接管理库。
它的设计具有高性能、可靠且易于使用。
德鲁伊连接池的工作原理是维护一个开放的数据库连接池,该池可以由多个客户端重用。
当客户端请求连接时,如果可用,则从池中获取连接。
如果池为空,则创建一个新的连接并添加到池中。
一旦客户端使用连接完成,它将返回池供其他客户端重用。
Druid使用公平队列算法来管理池,这确保连接在客户端之间均匀分布,而不是允许一个客户端垄断池。
这有助于防止连接饥荒,并确保所有客户端在需要时都能访问连接。
Druid还包括其他几项功能,以提高数据库连接的性能和可靠性,例如验证、监控和恢复陈旧连接。
它还提供了一套丰富的配置选项,允许对池进行微调,以满足应用程序的需求。
DRUID——为监控而生的DB池∙DRUID介绍∙DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有BoneCP快)。
∙配置参数∙和其它连接池一样DRUID的DataSource类为:com.alibaba.druid.pool.DruidDataSource,基本配置参数如下:配置缺省值说明name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。
如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)jdbcUrl 连接数据库的url,不同数据库不一样。
例如:mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnautousername 连接数据库的用户名password 连接数据库的密码。
如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。
详细看这里:https:///alibaba/druid/wiki/%E4%BD%BF%E7 %94%A8ConfigFilterdriverClassName 根据url自动识别这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName(建议配置下)initialSize 0 初始化时建立物理连接的个数。
初始化发生在显示调用init 方法,或者第一次getConnection时maxActive 8 最大连接池数量maxIdle 8 已经不再使用,配置了也没效果minIdle 最小连接池数量maxWait 获取连接时最大等待时间,单位毫秒。
Druid数据库连接池基本使⽤⼀、导⼊Druid的jar包和数据库驱动jar包⼆、定义配置⽂件 与c3p0不同,Druid的配置⽂件是properties形式的。
⽽且Druid不像c3p0那样可以⾃动加载配置⽂件,Druid需要⼿动去指定配置⽂件,所以Druid的配置⽂件可以叫任意名称,并且可以放置在任意⽬录下。
# druid.properties⽂件的配置driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3307/test_dbusername=rootpassword=root# 初始化连接数量initialSize=5# 最⼤连接数maxActive=10# 最⼤超时时间maxWait=3000⽬录结构如下:三、使⽤Druid连接池package cn.xj.datasource.druid;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.util.Properties;public class Druid_demo {public static void main(String[] args) throws Exception {//加载配置⽂件Properties pro = new Properties();InputStream is = Druid_demo.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is);//获取连接池对象DataSource ds = DruidDataSourceFactory.createDataSource(pro);//获取连接Connection conn = ds.getConnection();System.out.println(conn);}}四、定义⼯具类步骤: 1.定义⼀个类JDBCUtils *类⾥边提供静态代码块加载配置⽂件,初始化连接池对象 *类⾥边要提供这些⽅法: (1)获取连接⽅法:通过数据库连接池获取连接 (2)释放资源 (3)获取连接池的⽅法package cn.xj.datasource.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.io.IOException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class JDBCUtils {//定义成员变量private static DataSource ds;static {try {//加载配置⽂件Properties pro = new Properties();pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));//获取连接池对象DataSourceds = 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){if (stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null){try {conn.close(); //归还连接} catch (SQLException e) {e.printStackTrace();}}}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 getDateSource(){return ds;}}五、使⽤⼯具类 package cn.xj.datasource.druid;import cn.xj.datasource.utils.JDBCUtils;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class Druid_demo02 {public static void main(String[] args) {Connection conn = null;PreparedStatement pstmt = null;try {//获取连接conn = JDBCUtils.getConnection();//定义sql语句String sql = "insert into account value(null,?,?)";//获取PreparedStatement对象pstmt = conn.prepareStatement(sql);//给占位符(?)赋值pstmt.setString(1,"王五");pstmt.setDouble(2,3000);//执⾏sql语句int count = pstmt.executeUpdate();System.out.println(count);} catch (SQLException e) {e.printStackTrace();}finally {//释放资源JDBCUtils.close(pstmt,conn);}}}。