1. About

java利用jdbc直接连接数据库,经常取得连接,用完释放,很浪费系统资源

2. Code

Java代码

  1. package com.cdv.mam.db;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DatabaseMetaData;
  5. import java.sql.SQLException;
  6. import java.util.Properties;
  7.  
  8. import javax.sql.DataSource;
  9.  
  10. import org.apache.commons.dbcp.BasicDataSourceFactory;
  11. import org.apache.commons.logging.Log;
  12. import org.apache.commons.logging.LogFactory;
  13.  
  14. //import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;
  15.  
  16. /**
  17. * tomcat数据库连接池管理类<br>
  18. * 使用为tomcat部署环境<br>
  19. * 需要在类路径下准备数据库连接配置文件dbcp.properties
  20. *
  21. */
  22. public class DBManager {
  23. private static final Log log = LogFactory.getLog(DBManager.class);
  24. private static final String configFile = "dbcp.properties";
  25.  
  26. private static DataSource dataSource;
  27.  
  28. static {
  29. Properties dbProperties = new Properties();
  30. try {
  31. dbProperties.load(DBManager.class.getClassLoader()
  32. .getResourceAsStream(configFile));
  33. dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
  34.  
  35. Connection conn = getConn();
  36. DatabaseMetaData mdm = conn.getMetaData();
  37. log.info("Connected to " + mdm.getDatabaseProductName() + " "
  38. + mdm.getDatabaseProductVersion());
  39. if (conn != null) {
  40. conn.close();
  41. }
  42. } catch (Exception e) {
  43. log.error("初始化连接池失败:" + e);
  44. }
  45. }
  46.  
  47. private DBManager() {
  48. }
  49.  
  50. /**
  51. * 获取链接,用完后记得关闭
  52. *
  53. * @see {@link DBManager#closeConn(Connection)}
  54. * @return
  55. */
  56. public static final Connection getConn() {
  57. Connection conn = null;
  58. try {
  59. conn = dataSource.getConnection();
  60. } catch (SQLException e) {
  61. log.error("获取数据库连接失败:" + e);
  62. }
  63. return conn;
  64. }
  65.  
  66. /**
  67. * 关闭连接
  68. *
  69. * @param conn
  70. * 需要关闭的连接
  71. */
  72. public static void closeConn(Connection conn) {
  73. try {
  74. if (conn != null && !conn.isClosed()) {
  75. conn.setAutoCommit(true);
  76. conn.close();
  77. }
  78. } catch (SQLException e) {
  79. log.error("关闭数据库连接失败:" + e);
  80. }
  81. }
  82.  
  83. }

properties文件(dbcp.properties)

  1. #数据库驱动
  2. driverClassName=com.mysql.jdbc.Driver
  3. #数据库连接地址
  4. url=jdbc:mysql://192.168.1.41:3306/dmc
  5. #用户名
  6. username=root
  7. #密码
  8. password=root
  9.  
  10. #连接池的最大数据库连接数。设为0表示无限制
  11. maxActive=
  12. #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
  13. #接将被标记为不可用,然后被释放。设为0表示无限制
  14. maxIdle=
  15. #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
  16. maxWait=
  17.  
  18. #超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
  19. removeAbandoned=true
  20. #超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
  21. removeAbandonedTimeout=

用到的jar

java 数据库连接池的更多相关文章

  1. Java数据库连接池封装与用法

    Java数据库连接池封装与用法 修改于抄袭版本,那货写的有点BUG,两个类,一个用法 ConnectionPool类: package com.vl.sql; import java.sql.Conn ...

  2. Java数据库连接池

    转载过来的,最近在做一个小网站,准备使用这种方法.     Java jdbc数据库连接池总结! 1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及, ...

  3. 一个JAVA数据库连接池实现源码

    原文链接:http://www.open-open.com/lib/view/open1410875608164.html // // 一个效果非常不错的JAVA数据库连接池. // from:htt ...

  4. Java数据库连接池的几种配置方法(以MySQL数据库为例)

    Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...

  5. Java数据库连接池详解

    http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html 对于共享资源,有一个很著名的设计模式:资源池(Resource P ...

  6. 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)

    主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDB ...

  7. [转帖]为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用

    为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用 原创Clement-Xu 发布于2015-07-17 15:53:14 阅读数 57066  收藏 展开 HiKariCP是 ...

  8. 从零开始学 Java - 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...

  9. java数据库连接池技术原理(浅析)

    在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...

  10. [数据库连接池二]Java数据库连接池--C3P0和JDNI.

    前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...

随机推荐

  1. iOS-数据持久化基础-沙盒机制

    沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...

  2. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  3. gulp/grunt和browserify/webpack的区别

    Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧.Gulp / Grunt 是一种工具,能够优化前端工作流程.比如自动刷新页面.combo.压缩css.js.编译less等等.简单来说, ...

  4. Microsoft Visual Studio正忙解决办法

    问题描述 前段时间用vs2015进行开发.出现如下问题,关闭vs进程重启vs还是无法解决. 如何解决 进入本地项目.vs文件夹 这个文件夹下有个.suo文件,删除该文件,用任务管理器杀掉vs的进程,重 ...

  5. Spring注意事项(各部分理解)

    (1),每一个bean属性,就是一个普通的java类. 类有属性,有方法,如何交给容器管理.(注解的方式,xml方式配置) (2),通过Bean来实例化对象的方式 1.通过构造器(一般是无参的默认构造 ...

  6. 贪心算法-Huffman编码

    伪代码: 例子:

  7. jxl读取excel实现导入excel写入数据库

    @RequestMapping(params = "method=import", method = RequestMethod.POST) @ResponseBody publi ...

  8. Node.js的学习--使用cheerio抓取网页数据

    打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...

  9. CSS 魔法系列:纯 CSS 绘制各种图形《系列五》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  10. Windows Azure Service Bus (2) 队列(Queue)入门

    <Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bu ...