赞
踩
1.为什么使用数据库连接池
回顾:jdbc步骤:
1.加载驱动
2.创建连接
3.sql预编译 (Statement/PreparedStatement ?)
4.执行sql(DQL:executeQuery(), DML:executeUpdate())
5.关闭连接
在之前,我们每一次操作数据库,都需要走创建连接,并且用过就关闭。考虑一波并发。假如现在同时有10000个
人访问数据库。mysql扛不住,内存扛不住。
如何解决?使用数据库连接池
问题:
1.假如现在有10000人同时访问,但是连接池中只有4个连接,此时,总有人需要等待很长时间,用户体验不好。
2.假如现在连接池中有10000个连接对象,一年中,只有一个人访问。资源极度浪费。老板不好。
怎么解决?先做市场调研。根据市场的需求来决定!
时间换空间,空间换时间。
C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate [2]一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的JDBC驱动程序增加连接池功能。
Jakarta DBCP:DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池。DBCP可以直接的在应用程序中使用。
DBPool:是一个高效、易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池,使用户能够开发一个满足自己需求的数据库连接池。
Druid(德鲁伊特):DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池)。
Druid不仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个SQL
Parser。
支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。
Druid针对Oracle和MySql做了特别优化,比如:
Oracle的PS Cache内存占用优化;MySql的ping检测优化
Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL
Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。
简单SQL语句用时10微秒以内,复杂SQL用时30微秒。
通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter,就是通过Druid的SQL Parser分析语义实现的。
3. 代码实现
第一步:先导jar包,并且添加druid.properties配置文件
第二步:改造JDBCUtil文件:
第三步:测试
第一步:导jar包
从maven仓库下载
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
https://mvnrepository.com/
第二步:读取配置文件
第三步:改造JDBCUti
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。