1、数据库连接池(Connection pooling)
为啥使用Druid,简单看一下数据池干嘛得,例如我们日常使用DriverManager(驱动管理)获取得Connection连接对象,经常忘记关闭连接。而且我们使用一次需要取创建一个新得连接对象造成资源浪费。
这时候一个容器,数据库连接池,就可以来帮我们解决掉上面得问题.。
1)连接池优点
* 资源重用:在系统初始化时候就创建连接对象,用户使用时候是从池中取不是新连接,且用完继续放回池中 * 避免数据库连接遗漏:如避免我们忘记close连接对象而造成得浪费
2、数据库连接池标准接口(DataSource)
这是官方sun公司提供得接口,由第三方公司实现它
1 )常见得数据库连接池
* DBCP
*c3p0
*Druid
Druid介绍 · ApacheDruid中文技术文档 (apache-druid.cn)
Druid不仅仅是一个数据库连接池,它包括四个部分:
Druid是一个JDBC组件,它包括三个部分:
基于Filter-Chain模式的插件体系。
DruidDataSource 高效可管理的数据库连接池。
SQLParse
3、java代码实现Druid
1)导入jar包
jar包使用方法可见java代码实现,利用JDBC接口-连接Mysql数据库_fengdidiao的博客-CSDN博客
2)配置配置文件(.properties文件)
#就是一套Driver获取连接流程
# 1、得到驱动器\8.x.xx使用cj-jdbc
driverClassName=com.mysql.cj.jdbc.Driver
# 2、为Connection传参
# useServerPrepStmts=ture(开启防止sql注入-预编译功能)
# allowPublicKeyRetrieval=true 解决这个不允许公共密钥检索(Public Key Retrieval is not allowed)问题。
url=jdbc:mysql:///feng?useSSL=false&useServerPreStmts=ture
username=root
password=123456
# 3、初始化连接数量
initialSize=5
# 4、最大连接数
maxActive=10
# 5、最大等待时间:
# 获取连接时最大等待时间,单位毫秒,
# 超过连接就会失效。
# 配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,
# 如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
maxWait=3000
#用来检测连接是否有效的sql,要求是一个查询语句。
#validationQuery=SELECT 1
3)获取配置文件
---大白话使用属性对象(Properties)加载一个文件。加载文件使用流方法,FileInoutStream()方法,传入字符串类型资源文件地址。
---加载(load)资源文件即可
---如果不知道自己得资源文件路径,下翻 5)有方法说明。
Properties properties = new Properties();
//Properties类是java.util包下得一个类,目的就是读取Java的properties配置文件
properties.load(new FileInputStream("src/com/feng/jdbc/druid/druid.properties"));
//load加载命令,FileInoutStream()是IO流一个读方法。读取系统文件
4)得到连接池&使用连接池获取连接对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//将配置文件信息传入
//使用德鲁伊工厂获取一个数据池--类型是sun公司提供得接口标准,数据池都得使用
Connection connection = dataSource.getConnection();
//使用数据池获取连接对象---这个连接对象就可以管理事务commit--和获取执行sql对象Createstatement、prepareStatement
5)可能遇到错误如下
---系统文件寻找异常:在这就是找不到资源文件
---原因:3)步骤加载资源文件,流读取时候,位置信息错误
--解决办法:使用System得getProPerty(),传入"user.dir",打印当前模块路径
-打印结果如下
-找到路径将此路径下完全路径导入,找到①文件、从②开始将路径复制使用即可