JDBC(连接池) -- 02(I)
自定义连接池一:1.sun提供了一个连接池接口 javax.sql.DataSource。2.定义连接池MyDataSource实现接口DataSource。3.使用集合LinkedList<Connection> pool存放多个连接对象。LinkedList移除添加操作效率高。连接对象还是和以前一样调用工具类JDBCUtils里的getConnection。(第一篇JDBC的有介绍)4.书写获取连接的方法getConnection(),获取连接改为从池子中拿对象。5.书写归还连的方法backConnection()。把从池子pool中获取的对象归还。我们需要三个类: 1.JDBCUtils(第一篇JDBC的随笔有介绍如何书写) 2.MyDataSource 3.TestMyDataSource 注:测试用的Junit。
一、书写MyDataSource方法,此处不实现接口DataSource
package com.it.JDBC;import java.sql.Connection; import java.util.LinkedList;/*** @author Payphone* @time 2017-10-07 自定义连接池,未增强close方法* */ public class MyDataSource {private static Connection conn;private static LinkedList<Connection> pool = new LinkedList<Connection>();/*** 构造方法初始化连接池个数,也可用静态代码块初始化。* */public MyDataSource() {for (int i = 0; i < 5; i++) {conn = JDBCUtils.getConnection();pool.add(conn);}System.out.println("---------分割线---------");}/*** 获取连接* */public Connection getConnection() {System.out.println("连接前的个数:" + pool.size());conn = pool.remove(0);System.out.println("连接后的个数:" + pool.size());return conn;}/*** 归还连接* */public void backConnection() {System.out.println("释放连接前的个数:" + pool.size());pool.add(conn);System.out.println("释放连接后的个数:" + pool.size());} }
二、书写测试方法TestMyDataSource
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
import com.it.JDBC.JDBCUtils;
import com.it.JDBC.MyDataSource;
public class TestMyDataSource {
@Test
public void testAddUser() {
Connection conn = null;
MyDataSource md = new MyDataSource();
PreparedStatement psmt = null;
try {
conn = md.getConnection();
String sql = "insert into t_user(id,pwd) values(?,?)";
psmt = conn.prepareStatement(sql);
psmt.setInt(1, 2015005);
psmt.setString(2, "2015005");
int rows = psmt.executeUpdate();
if (rows > 0) {
System.out.println("插入数据成功!");
} else {
System.out.println("插入数据失败!");
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JDBCUtils.Release(null, psmt, null);
md.backConnection();
}
}
}
自定义连接池一代码并不完善,我们调用了工具类JDBCUtils.Release方法释放了除conn外的对象。又调用了md.backConnection方法归还conn。
在自定义连接池二的代码中我们将增强close方法。调用工具类JDBCUtils.Release方法归还连接。
转载于:https://www.cnblogs.com/ljwdemo/p/7636102.html
JDBC(连接池) -- 02(I)相关推荐
- jdbc封装mysql_用Java手动封装JDBC连接池(一)
JDBC存在的问题 代码的冗余:在对数据库进行增删改查时,每个操作的JDBC流程和SQL执行代码的流程都一样,造成代码的冗余,所以我们可以把冗余的部分封装起来,封装之后,我们就不用再去写JDBC流程, ...
- HikariCP 高性能的 JDBC 连接池
HikariCP 是一个高性能的 JDBC 连接池组件.下图是性能的比较测试结果: 使用方法: HikariConfig config = new HikariConfig(); config.set ...
- 在独立Java应用程序中使用Tomcat JDBC连接池
这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...
- JDBC连接池和DBUtils
本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中"获得连接"或"释放资源"是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况 ...
- 数据层优化-jdbc连接池简述、druid简介
终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...
- jdbc连接池工作原理_JDBC连接实际上如何工作?
jdbc连接池工作原理 The JDBC Connection interface is a part of java.sql package. The java.sql.Connection int ...
- JDBC、封装JDBC连接池、第三方连接池工具
主要内容: JDBC简介 JDBC来源 通过代码实现JDBC JDBC的改进需求 JDBC改进的代码实现 JDBC使用的设计模式 封装连接池 封装JDBC连接池 ThreadLoacl的使用 Thre ...
- JDBC,JDBC连接池和JNDI
最初级的用法,也可以说是菜鸟 显式地把 JDBC 驱动程序.数据库 URL 以及用户名和口令编码到程序中 Connection conn=null; String url = "jdbc:m ...
- 各种JDBC连接池配置参数比较
苟且,诗与远方 各种JDBC连接池参数比较
最新文章
- 局域网共享问题解决方法!
- 大数据及Linux安装
- 上下文 及 执行上下文
- JVM与Java的体系结构(JVM入门知识体系总结)
- 关于ShopEx的二次开发的目录结构及各文件功能
- 无法连接上 cn.archive.ubuntu.com:80 (123.129.214.98)。 - connect (111: 拒绝连接)
- 每个前端工程师都应该去了解的前端面试题总结(一)
- java 将list按指定大小等分,最后多余的单独一份
- 雷霆战机源代码c语言,C++实现雷霆战机可视化小游戏
- Android 系统(212)---monkey实战–测试步骤、常用参数、常规monkey命令
- 基金盘后业务的详细设置
- mac 查看端口的使用情况
- Python day17 模块介绍1(time,random)
- ios::ate和ios::app在C++文件中的区别
- “云湖共生 • 数智未来”数据湖应用实践白皮书重磅发布
- 细丝菲涅尔衍射MATLAB,任意孔型菲涅尔衍射matlab仿真.docx
- 个人博客重写,心路历程【尚未佩脱剑,转眼便江湖。愿历经千帆,归来仍是少年。】
- 通过Log4j生成CSV格式日志时自动插入表头处理方法
- 激光振镜误差校正算法C语言,一种基于双线性插值法的激光振镜图形校正算法的制作方法...
- 【Android真机app的性能测试(CPU,内存,启动时间)】
热门文章
- 函数可重入问题reentrant functions
- 【python】循环结构if、for 、while
- windows下javadoc生成文档注释的命令
- 08-06 性能测试--测试报告与数据
- oracle异步sql,Linux上Oracle是否使用异步io的诊断
- react加水印_给网页增加水印的方法,react
- 计算机应用基础 东师 离线,东师1609计算机应用基础离线作业(8页)-原创力文档...
- 2021年,Web前端还好找工作吗?
- android系统应用程序,Android调用系统应用程序
- 我的世界JAVA版编程语言_Java版版本记录/开发版本