JAVA连接Mysql数据库,如何创建连接池

连接池:

频繁的数据连接操作势必占用很多的系统资源,相应速度必定下降,程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库,系统资源被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。

连接池为数据库建立一个“缓冲池”,预先在缓冲区中放入一定数量的连接,当需要数据库连接时,只需从”缓冲池“中取出一个,使用完毕后在放回去,通过设定连接池最大连接数来防止系统无休止的数据连接。更为重要的是可以通过连接池的管理机制监视数据库的连接数量,使用情况。为系统开发、测试、性能调整提供依据。

工作流程:

如果没有空闲连接,则检查当前所开连接池是否达到允许的最大连接数,如果没有就新建一个连接,如果达到,就等待一定时间,如果在等待时间内有连接释放,就可以把这个连接分配给等待的用户。如果等待时间超过还没有连接释放,则返回null


持久层BaseDao

package com.lovo.dao.impl;

import java.io.File;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

public class BaseDao {
	   protected Connection con;
	   protected PreparedStatement ps;
	   protected ResultSet rs;
	   //创建连接池对象
	   private static BasicDataSource dbs = new BasicDataSource();
	   //将连接数据库的信息放在了source/connection.txt中

	   static{
		   File file = new File("source");
		   if(!file.exists()){//如果目录不存在创建目录
			   file.mkdir();
		   }
		   Properties pro = new Properties();
		   try {
			//加载文件
			pro.load(new FileReader("source/connection.txt"));
		   } catch (Exception e) {
			   e.printStackTrace();
		   }
		   //设置要加载的驱动类
		   dbs.setDriverClassName(pro.getProperty("driver"));
		   //连接数据库的url
		   dbs.setUrl(pro.getProperty("url"));
		   //数据库用户名
		   dbs.setUsername(pro.getProperty("userName"));
		   //数据库密码
		   dbs.setPassword(pro.getProperty("passWord"));
		   //最大连接数
		   dbs.setMaxActive(50);
		   //最小连接数
		   dbs.setMaxIdle(20);
		   //等待时间,一毫秒为单位
		   dbs.setMaxWait(1000);
	   }
	   /**
	    * 得到连接
	    */
	   public void getConnection(){
		   try {
			this.con = dbs.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		}
	   }
	   /**
	    * 关闭连接
	    */
	   public void close(){
		   try {
			   if (rs!=null) {
				   this.rs.close();
			   }
			   if (ps!=null) {
				   this.ps.close();
			   }
			   if (con!=null) {
				   this.con.close();
			   }
			   
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	   }
}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值