Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

The jdbc pool for java.(java 手写 jdbc 数据库连接池实现)

License

NotificationsYou must be signed in to change notification settings

houbb/jdbc-pool

Repository files navigation

jdbc-pool 是一款简化版的 jdbc-pool 实现。

Maven CentralBuild StatusOpen Source Love

拓展阅读

第一节从零开始手写 mybatis(一)MVP 版本

第二节从零开始手写 mybatis(二)mybatis interceptor 插件机制详解

第三节从零开始手写 mybatis(三)jdbc pool 从零实现数据库连接池

第四节从零开始手写 mybatis(四)- mybatis 事务管理机制详解

创作目的

  • 学习 jdbc-pool 的原理

  • 便于拓展自己的数据库工具

特性

  • 基本的数据库连接池实现

  • 自动适配 jdbc 驱动类

  • 支持各种场景对于连接的校验

快速开始

需要

  • jdk 1.7+

  • maven 3.x+

maven 引入

<dependency>    <groupId>com.github.houbb</groupId>    <artifactId>jdbc-pool</artifactId>    <version>1.7.0</version></dependency>

引导类

JdbcPoolBsjdbcPoolBs =JdbcPoolBs.newInstance()                .username("root")                .password("123456")                .url("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");DataSourcepooled =jdbcPoolBs.pooled();DataSourceunPooled =jdbcPoolBs.unPooled();

测试代码

UnPooledDataSourcesource =newUnPooledDataSource();source.setDriverClass("com.mysql.jdbc.Driver");source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");source.setUser("root");source.setPassword("123456");Connectionconnection =source.getConnection();

池化的实现

PooledDataSourcesource =newPooledDataSource();source.setDriverClass("com.mysql.jdbc.Driver");source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");source.setUser("root");source.setPassword("123456");source.setMinSize(1);// 初始化source.init();Connectionconnection =source.getConnection();System.out.println(connection.getCatalog());Connectionconnection2 =source.getConnection();System.out.println(connection2.getCatalog());

输出日志

[DEBUG] [2020-07-18 10:50:54.536] [main] [c.g.h.t.p.d.PooledDataSource.getFreeConnection] - 从连接池中获取连接test[DEBUG] [2020-07-18 10:50:54.537] [main] [c.g.h.t.p.d.PooledDataSource.getConnection] - 开始扩容连接池大小,step: 1[DEBUG] [2020-07-18 10:50:54.548] [main] [c.g.h.t.p.d.PooledDataSource.getConnection] - 从扩容后的连接池中获取连接test

第一次默认直接从线程池中获取,第二次为重新创建的信息。

后期 road-map

  • 根据 url 自动识别 driverClass

  • 添加获取的等待

  • 添加设置为繁忙的状态 check

  • 添加日志替代 sout

  • 添加 validQuery, testOnBorrow, testOnReturn, testWhileIdle

  • 添加 filter-chain

  • JMX 添加各种监听的属性

  • 添加监控页面实现

  • 添加 druid/mybatis??/commons-pool 等常见的数据源

中间件等工具开源矩阵

heaven: 收集开发中常用的工具类

rpc: 基于 netty4 实现的远程调用工具

mq: 简易版 mq 实现

ioc: 模拟简易版 spring ioc

mybatis: 简易版 mybatis

cache: 渐进式 redis 缓存

jdbc-pool: 数据库连接池实现

sandglass: 任务调度时间工具框架

sisyphus: 支持注解的重试框架

resubmit: 防止重复提交框架,支持注解

auto-log: 日志自动输出

async: 多线程异步并行框架

About

The jdbc pool for java.(java 手写 jdbc 数据库连接池实现)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp