JDBC数据源(DataSource)的简单实现
前言:
数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。
数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少创建数据库连接的次数,提高了系统性能。
对于数据源的应用,一般都选择实用开源的数据源或数据库连接池来使用,比如,常见的有DBCP、C3P0、Proxool等等。但用起来有些笨重和麻烦。下面自己手动实现个精简的数据源,代码如下:
1 import org.apache.commons.logging.Log; 2 import org.apache.commons.logging.LogFactory; 3 4 import javax.sql.DataSource; 5 import java.util.Collections; 6 import java.util.LinkedList; 7 import java.sql.Connection; 8 import java.sql.SQLException; 9 import java.sql.DriverManager; 10 import java.io.PrintWriter; 11 12 /** 13 * 一个简单的DataSource实现 14 * 15 * @author leizhimin 2010-1-14 0:03:17 16 */ 17 public class SimpleDateSource implements DataSource { 18 private static Log log = LogFactory.getLog(SimpleDateSource.class); 19 private static final String dirverClassName = "com.mysql.jdbc.Driver"; 20 private static final String url = "jdbc:mysql://127.0.0.1:3306/testdb"; 21 private static final String user = "root"; 22 private static final String pswd = "leizhimin"; 23 //连接池 24 private static LinkedList<Connection> pool = (LinkedList<Connection>) Collections.synchronizedList(new LinkedList<Connection>()); 25 private static SimpleDateSource instance = new SimpleDateSource(); 26 27 static { 28 try { 29 Class.forName(dirverClassName); 30 } catch (ClassNotFoundException e) { 31 log.error("找不到驱动类!", e); 32 } 33 } 34 35 private SimpleDateSource() { 36 } 37 38 /** 39 * 获取数据源单例 40 * 41 * @return 数据源单例 42 */ 43 public SimpleDateSource instance() { 44 if (instance == null) instance = new SimpleDateSource(); 45 return instance; 46 } 47 48 /** 49 * 获取一个数据库连接 50 * 51 * @return 一个数据库连接 52 * @throws SQLException 53 */ 54 public Connection getConnection() throws SQLException { 55 synchronized (pool) { 56 if (pool.size() > 0) return pool.removeFirst(); 57 else return makeConnection(); 58 } 59 } 60 61 /** 62 * 连接归池 63 * 64 * @param conn 65 */ 66 public static void freeConnection(Connection conn) { 67 pool.addLast(conn); 68 } 69 70 private Connection makeConnection() throws SQLException { 71 return DriverManager.getConnection(url, user, pswd); 72 } 73 74 public Connection getConnection(String username, String password) throws SQLException { 75 return DriverManager.getConnection(url, username, password); 76 } 77 78 public PrintWriter getLogWriter() throws SQLException { 79 return null; 80 } 81 82 public void setLogWriter(PrintWriter out) throws SQLException { 83 84 } 85 86 public void setLoginTimeout(int seconds) throws SQLException { 87 88 } 89 90 public int getLoginTimeout() throws SQLException { 91 return 0; 92 } 93 94 public <T> T unwrap(Class<T> iface) throws SQLException { 95 return null; 96 } 97 98 public boolean isWrapperFor(Class<?> iface) throws SQLException { 99 return false; 100 } 101 }
转载于:https://www.cnblogs.com/ygh1229/p/5807581.html
JDBC数据源(DataSource)的简单实现相关推荐
- mysql datasource.url_SpringBoot配置数据源DataSource
使用properties文件配置springboot默认数据源 这种方式十分简单,只用在application.properties文件中配置数据库连接属性即可. spring.datasource. ...
- C3P0数据源和Tomcat jdbc数据源的基本配置
在项目中我们经常需要使用数据源,数据源存储所有建立数据库连接的信息.就象通过指定文件名你可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接.下面分别对C3P0数据源和T ...
- jdbc 数据源_Java数据源,JDBC数据源示例
jdbc 数据源 Java DataSource and JDBC DataSource programming is the way to work with database in our jav ...
- 使用JDBC技术完成一个简单的账务管理系统
一:账务系统的大致组成: 简单来说包括app层,controller层,dao层,domain层,service层,tools层,view层. 我的运行环境是:java version "1 ...
- Springboot整合JDBC和DBUtils,实现简单的增删改查.
Springboot整合JDBC和DBUtils,实现简单的增删改查. 一.pom.xml文件 <?xml version="1.0" encoding="UTF- ...
- 数据源的配置简单介绍
数据源 是指数据库应用程序所使用的数据库或者数据库服务器. 数据源的作用 数据源是一种用来提高数据库连接性能的常规手段,数据源会负责维持一个数据库连接池,当程序创建数据源实例时,系统会一次性地创建 ...
- apache配置支持mysql_Apache Kylin | 建立 JDBC 数据源
自 Apache Kylin v2.3.x 起有效 支持 JDBC 数据源 自 v2.3.0 Apache Kylin 开始支持 JDBC 作为第三种数据源(继 Hive,Kafka).用户可以直接集 ...
- 使用Kylin导入JDBC数据源遇到的问题
一.目标: 直接使用Mysql数据作为Kylin数据源 二.参考官方配置 JDBC 数据源 准备 Sqoop Kylin 使用 Apache Sqoop 从关系型数据库加载数据到 HDFS.在与 Ky ...
- 使用JDBC来实现一个简单的增删改查
使用jdbc来实现一个简单的增删改查 package com.database;import java.sql.Connection; import java.sql.PreparedStatemen ...
- JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。
JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...
最新文章
- 女生读计算机专业好,女生选择计算机专业就读好吗?
- ORA-03135 ,ORA-02050到底什么原因?
- mybatis转义反斜杠_mybatis like 的坑
- 数据分析利器--Pandas
- Oracle 如何修改列的数据类型
- html表单提交前验证,jquery表单提交前实现同步验证(附代码)
- leetcode180. 连续出现的数字(SQL)
- OAM深入解读:使用OAM定义与管理Kubernetes内置Workload
- 【图精】徐克镜头里的十大美人
- sql join 示例_SQL CROSS JOIN与示例
- Oracle输入默认密码错误,oracle中默认账号oracle 11g SQL plus软件怎么打开?打开显示密码错误怎么办?...
- 三种方法求最大公约数
- 7、万国觉醒建筑白天黑夜效果(Shader Graph)
- 数据组,请求组,职责,用户关系
- 90%的人都浪费了阳台?这6种装修方案建议照搬~
- 更改Windows桌面位置为D盘
- 超详细的java基础知识学习(java SE、javaEE)笔记 核心重点!
- 多机Nomad+Consul+consul-template+Nginx反向代理
- jenkins学习4-进docker容器安装python3环境
- 第2次实验——算法基本功 与 综合思考
热门文章
- c++ 队列_RabbitMQ的死信与延迟队列,你真的会用吗?
- glEnable(GL_DEPTH_TEST)作用
- 系统封装 如何为原生PE集成软件
- 重庆Uber优步司机奖励政策
- Vmware下安装配置HMC
- MATLAB实现频数直方图——hist的使用
- sql语句有没有怎么优化的空间,这条语句在我这里执行是死机
- apach2.2+php5.35 windows环境下安装问题解决
- C# FAQ: const和static readonly有什么区别?
- 1月4日 每次安装都有新问题