`
hengxing2009
  • 浏览: 87226 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDBC数据源(DataSource)的简单实现

    博客分类:
  • java
阅读更多
数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。

数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少创建数据库连接的次数,提高了系统性能。

对于数据源的应用,一般都选择实用开源的数据源或数据库连接池来使用,比如,常见的有DBCP、C3P0、Proxool等等。但用起来有些笨重和麻烦。下面自己手动实现个精简的数据源,代码如下:
package com.lavasoft.simpledatesource; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

import javax.sql.DataSource; 
import java.util.Collections; 
import java.util.LinkedList; 
import java.sql.Connection; 
import java.sql.SQLException; 
import java.sql.DriverManager; 
import java.io.PrintWriter; 

/** 
* 一个简单的DataSource实现 
* 
* @author leizhimin 2010-1-14 0:03:17 
*/ 
public class SimpleDateSource implements DataSource { 
        private static Log log = LogFactory.getLog(SimpleDateSource.class); 
        private static final String dirverClassName = "com.mysql.jdbc.Driver"; 
        private static final String url = "jdbc:mysql://127.0.0.1:3306/testdb"; 
        private static final String user = "root"; 
        private static final String pswd = "leizhimin"; 
        //连接池 
        private static LinkedList<Connection> pool = (LinkedList<Connection>) Collections.synchronizedList(new LinkedList<Connection>()); 
        private static SimpleDateSource instance = new SimpleDateSource(); 

        static { 
                try { 
                        Class.forName(dirverClassName); 
                } catch (ClassNotFoundException e) { 
                        log.error("找不到驱动类!", e); 
                } 
        } 

        private SimpleDateSource() { 
        } 

        /** 
         * 获取数据源单例 
         * 
         * @return 数据源单例 
         */ 
        public SimpleDateSource instance() { 
                if (instance == null) instance = new SimpleDateSource(); 
                return instance; 
        } 

        /** 
         * 获取一个数据库连接 
         * 
         * @return 一个数据库连接 
         * @throws SQLException 
         */ 
        public Connection getConnection() throws SQLException { 
                synchronized (pool) { 
                        if (pool.size() > 0) return pool.removeFirst(); 
                        else return makeConnection(); 
                } 
        } 

        /** 
         * 连接归池 
         * 
         * @param conn 
         */ 
        public static void freeConnection(Connection conn) { 
                pool.addLast(conn); 
        } 

        private Connection makeConnection() throws SQLException { 
                return DriverManager.getConnection(url, user, pswd); 
        } 

        public Connection getConnection(String username, String password) throws SQLException { 
                return DriverManager.getConnection(url, username, password); 
        } 

        public PrintWriter getLogWriter() throws SQLException { 
                return null; 
        } 

        public void setLogWriter(PrintWriter out) throws SQLException { 

        } 

        public void setLoginTimeout(int seconds) throws SQLException { 

        } 

        public int getLoginTimeout() throws SQLException { 
                return 0; 
        } 

        public <T> T unwrap(Class<T> iface) throws SQLException { 
                return null; 
        } 

        public boolean isWrapperFor(Class<?> iface) throws SQLException { 
                return false; 
        } 
}

这个数据源的实现虽然很简陋,总代码量不到百行,却基本上实现了数据源的所有功能,达到了提高Connection复用的目的。

如果你想做的更复杂些,做个配置文件,
配置数据库连接信息
写个后台线程监控连接池的Connection超时、被强制关闭、池的尺寸、当前大小等等。
再完善下数据源的log相关方法的实现。
功能就很强大了。

本文出自 “熔 岩” 博客,http://lavasoft.blog.51cto.com/62575/265073
分享到:
评论

相关推荐

    weblogic配置jdbc数据源

    weblogic配置jdbc数据源weblogic配置jdbc数据源weblogic配置jdbc数据源

    Java Web JDBC数据源.docx

    在这个配置文件中,我们可以看到的是使用了 javax.sql.DataSource 接口来定义数据源。 2. Context 配置:Context 配置是指 Tomcat 中的 Context 构件,它用于加载 Web 应用程序的配置信息。在这个配置文件中,我们...

    通过Spring Boot配置动态数据源访问多个数据库的实现代码

    * datasource:自己实现的数据源管理逻辑 * dbmgr:管理了项目编码与数据库IP、名称的映射关系 * mapper:数据库访问接口 * model:映射模型 * rest:微服务对外发布的restful接口 * application.yml:配置了数据库...

    WAS创建JDBC及数据源.

    点击刚创建的数据源“Oracle JDBC Driver DataSource”,然后在“组件管理认证别名”选择刚创建的 J2C 认证。 通过以上步骤,我们可以成功地创建 JDBC 及数据源,并实现对数据库的访问控制。这种方式可以提高应用...

    JDBC数据源连接池配置及应用

    本文将详细讲解JDBC数据源连接池的配置和应用。 首先,让我们了解JDBC建立数据库连接的两种基本方式: 1. **使用DriverManager获得数据库连接**: 这是最基础的方法,程序员在代码中显式地加载驱动、创建连接。...

    分库分表,多数据源的切换

    通过使用sharding-jdbc分库分表,以及多数据源的切换

    springmvc +shiro+querydsl+jpa框架多数据源配置详细说明

    通过配置数据库连接信息、数据源信息、多数据源及事物管理、持久层 DAO 的管理配置、Web.xml 中过滤器配置、DAO 实现类 EntityManager 注解修改、jdbc 数据源注解修改和 Service 实现类中事物注解修改,可以实现灵活...

    SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询.pdf

    SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询,案例以postgresql和oracle数据库为数据源,分别使用mybatis-plus分页插件和pagehelper分页插件实现分页查询。

    jeecms 多数据源处理例子

    3. **配置数据源路由**:为了能够在代码中动态选择数据源,我们需要实现一个数据源路由类,如`AbstractRoutingDataSource`。在这个类中,你可以根据业务逻辑或线程绑定变量来决定使用哪个数据源。 ```java public...

    Spring配置多个数据源

    数据源是Java中用于存储数据库连接信息的接口,它实现了JDBC规范中的`javax.sql.DataSource`接口。通过数据源,我们可以获取到数据库连接,进行SQL查询和其他数据库操作。 配置多个数据源在Spring中主要分为以下几...

    JNDI数据源配置(tomcat)

    Tomcat 是一个流行的 Java Web 服务器,配置 JNDI 数据源可以实现数据库连接的复用和共享。 在 Tomcat 中,配置 JNDI 数据源有两种方式:单个应用独享数据源和全局 JNDI 数据源。 1. 单个应用独享数据源 在 ...

    jdbc课件以及源代码(数据源)

    在JDBC中,数据源(DataSource)是一个关键概念,它是Java中用于存储数据库连接信息的接口,通常用于管理数据库连接池。数据源可以提高应用程序的性能,因为它可以重用已经建立的数据库连接,避免了频繁创建和关闭...

    spring多数据源

    通过扩展这个类或直接配置路由规则,我们可以实现数据源的动态选择。 3. **配置多数据源**:在Spring的XML配置文件中,我们需要定义多个DataSource bean,分别代表不同的数据库连接。这些数据源可以是Apache ...

    DataSource

    数据源(DataSource)是Java JDBC API中的一种接口(javax.sql.DataSource),它提供了一种创建和管理数据库连接的方法。数据源通过连接池来管理这些连接,避免了频繁创建和关闭连接的开销,从而提高了性能。数据源...

    spring1.2 操作多个数据源

    在Spring 1.2框架中,操作多个数据源是一项重要的功能,它允许应用程序根据需求灵活地切换或选择不同的...在实际项目中,还可以根据业务需求进行更复杂的定制,比如添加更多的数据源,或者实现更复杂的数据源选择策略。

    动态创建数据源,加上jar包就可以运行

    首先,数据源(DataSource)是Java中用于管理数据库连接的接口,它遵循Java的JDBC API。常见的数据源实现有Apache Commons DBCP、C3P0、HikariCP等。在Java中,我们通常通过Java的Context和Initial LifeCycle(JNDI...

    数据源封装代码jar包

    在Java编程语言中,数据源通常通过Java Database Connectivity (JDBC) API来实现。JDBC提供了一组标准接口,如DataSource,Connection,Statement等,用于与各种数据库进行交互。DataSource接口是连接池的常用实现,...

    DataSource接口介绍与使用

    DataSource对象可以注册到名字服务中,应用程序可以通过名字服务获得DataSource对象,并用它来产生一个与DataSource代表的数据源之间的连接。系统管理员或者有相应权限的人可以配置DataSource对象,包括设定...

    springboot v2.0.3版本多数据源配置方法

    例如,在一些复杂的业务场景中,我们可能需要使用多个数据源来存储不同的数据,这时我们就需要使用多数据源配置方法来实现。 本文详细介绍了Spring Boot v2.0.3版本中多数据源配置方法的变化,并提供了解决异常的...

Global site tag (gtag.js) - Google Analytics