自定义连接池DataSourse

连接池概述:

  管理数据库的连接,
作用:
  提高项目的性能.就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可.所有的连接池必须实现一个接口 javax.sql.DataSource接口

获取连接方法:
  Connection getConnection()
归还连接的方法就是以前的释放资源的方法.调用connection.close();

常用连接池:
DBCP、C3P0

自定义连接池:

  1.创建一个DataSourse项目

  2.新建一个包,com.dbcp.hjh;包下新建一个java类DataSourseTest.java

  3.创建一个工具包com.util.hjh,放工具类JDBCUtil.java

  4.导入jar包mysql-connection-java-5.1.47.jar;记得导入后bulidPath以下

工具类JDBCUtil.java代码:

package com.util.hjh;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
final static String url = "jdbc:mysql://localhost/hejh?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源closeResourse(conn,st)*/
public static void closeResourse(Connection conn,Statement st) {
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源closeResourse(conn,ps)*/
public static void closeResourse(Connection conn,PreparedStatement ps) {
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**关闭资源closeResourse(rs)*/
public static void closeResourse(ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}finally { }
}
}

DataSourseTest.java代码:

package com.dbcp.hjh;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.LinkedList;
import com.util.hjh.JDBCUtil; //自定义连接池
public class DataSourseTest { static LinkedList<Connection> pool = new LinkedList<>();//定义一个连接池
//初始化时,放入三个连接
static {
for(int i=0;i<3;i++) {
try {
Connection conn = JDBCUtil.getConnection();
pool.add(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
} //从连接池中获取连接
public static Connection getConnection() {
//获取连接之前需判断是否为空
if(pool.isEmpty()) {
//如果连接池为空,新建2个连接
for(int i=0;i<2;i++) {
try {
Connection conn = JDBCUtil.getConnection();
pool.add(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return pool.removeFirst();
} //归还连接
public static void backConn(Connection conn) {
//将conn放入到list的最后面即可
pool.addLast(conn);
System.out.println("归还连接啦");
} public static void main(String[] args) {
//创建连接池
DataSourseTest ds = new DataSourseTest();
//获取连接
Connection conn = ds.getConnection();
System.out.println("即将获取一个连接:");
System.out.println(conn);
//归还连接,不做其他操作
ds.backConn(conn);
}
}

eclipse中console输出:

即将获取一个连接:
com.mysql.jdbc.JDBC4Connection@8de145
归还连接啦

自定义连接池DataSourse的更多相关文章

  1. JDBC连接池-自定义连接池

    JDBC连接池 java JDBC连接中用到Connection   在每次对数据进行增删查改 都要 开启  .关闭  ,在实例开发项目中 ,浪费了很大的资源 ,以下是之前连接JDBC的案例 pack ...

  2. java自定义连接池

    1.java自定义连接池 1.1连接池的概念: 实际开发中"获取连接"或“释放资源”是非常消耗系统资源的两个过程,为了姐姐此类性能问题,通常情况我们采用连接池技术来贡献连接Conn ...

  3. JDBC连接池原理、自定义连接池代码实现

    首先自己实现一个简单的连接池: 数据准备: CREATE DATABASE mybase; USE mybase; CREATE TABLE users( uid INT PRIMARY KEY AU ...

  4. JDBC自定义连接池

    开发中,"获得连接"和"释放资源"是非常消耗系统资源的,为了解决此类性能问题可以采用连接池技术来共享连接Connection. 1.概述 用池来管理Connec ...

  5. MySQL学习(六)——自定义连接池

    1.连接池概念 用池来管理Connection,这样可以重复使用Connection.有了池,我们就不用自己来创建Connection,而是通过池来获取Connection对象.当使用完Connect ...

  6. SpringBoot 整合mongoDB并自定义连接池

    SpringBoot 整合mongoDB并自定义连接池 得力于SpringBoot的特性,整合mongoDB是很容易的,我们整合mongoDB的目的就是想用它给我们提供的mongoTemplate,它 ...

  7. JAVA自定义连接池原理设计(一)

    一,概述 本人认为在开发过程中,需要挑战更高的阶段和更优的代码,虽然在真正开发工作中,代码质量和按时交付项目功能相比总是无足轻重.但是个人认为开发是一条任重而道远的路.现在本人在网上找到一个自定义连接 ...

  8. JDBC连接池一 自定义连接池

    package com.mozq.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...

  9. day18 15.自定义连接池

    我们写的是连接池吗?Connection对象绝对不能关.现在写的玩意不是连接池.因为现在讲的是JDBC,连接池也是JDBC里面的,人家那是SUN公司定义的标准.标准,你那不是标准.既然是标准,你做连接 ...

随机推荐

  1. python简单爬豆瓣电影排名

    爬豆瓣电影 网站分析: 1 打开https://movie.douban.com,选择  [排行榜],然后随便选择一类型,我这里选择科幻    2 一直浏览网页,发现没有下一的标签,是下滑再加载的,可 ...

  2. Eclipse配置jstl标准标签库详解

    安装JSTL1.2 日期:2017-06-27 下载jstl1.2版本,下载地址:http://repo2.maven.org/maven2/javax/servlet/jstl/ 用压缩包打开jst ...

  3. PHP jpgraph的一点小提示和方法

    PHP默认是不启用GD库的,因为需要在php.ini的配置文件中将extension=php_gd2.dll注释打开.打开后你就可以画一些你想画的各种奇葩图案了.什么?不会画?那回去学基础! 今天看了 ...

  4. 03Redis入门指南笔记(事务、生存时间、排序、消息通知、管道)

    一:事务 1:概述 Redis中的事务(transaction)是一组命令的集合.事务同命令一样都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行. 事务的原理是是先将属于一个事务 ...

  5. PHP的安全性问题,你能说得上几个?

    一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令 ...

  6. Jboss配置HTTPS

    配置jboss的HTTP请求走SSL(HTTPS协议) l         生成keystore 文件 用keytool生成server.keystore文件: 进入命令行 C:\Documents ...

  7. python实例 文件处理

    对比Java,python的文本处理再次让人感动 #! /usr/bin/python spath="D:/download/baa.txt" f=open(spath," ...

  8. python 内置操作函数

  9. HDU5583 Kingdom of Black and White

    Kingdom of Black and White Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  10. Intellij IDEA 创建资源文件夹 source folder

    [转载]原文链接:https://blog.csdn.net/u014723529/article/details/78050725 之前用 eclipse 新建有一个 source folder , ...