Atitit.自定义jdbc驱动  支持jsql

1. 为什么需要自定义驱动1

1.1. 透明分库分表1

1.2. 自定义数据库的接口。比如大数据文档文件类型的数据库,数据存储引擎2

2. 整个文章分为3个部分:  2

2.1. 1.    应用程序连接数据库的简单方法。2

2.2. 2.    使用自定义的JDBC驱动编译、部署、访问数据。2

2.3. 3.    通过高级的日志功能、连接池、预处理数据集增强自定义的JWDriver的性能。2

3. JDBC驱动的结构 Type1---Type4  2

4. Type1--4区别4

5. 参考4

1. 为什么需要自定义驱动

1.1. 透明分库分表

通过以上的分析我们可以通过对JDBC进行包装就能做到多数据源,甚至可以在JDBC层上进行分库分表。这样做的好处是对于上层开发人员是透明的。

1.2. 自定义数据库的接口。比如大数据文档文件类型的数据库,数据存储引擎

2. 整个文章分为3个部分:

2.1.  1.    应用程序连接数据库的简单方法。

2.2.   2.    使用自定义的JDBC驱动编译、部署、访问数据。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

2.3.   3.    通过高级的日志功能、连接池、预处理数据集增强自定义的JWDriver的性能。

3.  JDBC驱动的结构 Type1---Type4

JDBC为通用的数据库访问提供了一种程序级的接口。在一个特定的数据库环境下使用JDBC API你需要一个JDBC驱动来完成他们直接的协调运行。JDBC被分为四种类型或者说层次。每一个类型都有一个JDBC实现,以便满足日益增加的对平台独立性、执行效率和可管理性的要求。这四种类型分别是:

  Type1:JDBC-ODBC(开方数据库连接)桥。

  Type2:本地API,部分的Java驱动。

  Type3:网络协议,完全的Java 驱动。

  Type4:本地协议,完全的Java驱动。

  所有的JDBC驱动都要实现下面四个JDBC类:Driver、Connection、Statement和ResultSet。包含在java.sql包种DriverManager类用于管理被加载的驱动。客户端应用程序通过它获得数据库连接。JDBC的Driver通过下面的方法加载: 

 Class.forName("com.jw.client.JWDriver");

  当这个Driver被加载时它的staic部分的代码就会执行,通过DriverManager注册这个驱动。现在,只要客户端应用程序通过DriverManger.getConnection()方法,DriverManager就会转而调用nnect()方法。每一个JDBC驱动必须实现java.sql.Driver接口。所以,JDBC驱动的nnect方法会首先检测当前的驱动Url是否正确,然后会通过connet()方法返回一个Connection对象。

4. Type1--4区别

Type1 JDBC-ODBC桥
作为JDK1.1后的一部分,是sun.jdbc.odbc包的一部分
Application--->JDBC-ODBC Bridge(Type1 jdbc driver)---->JDBC-ODBC Library--->ODBC Driver-->Database
适用于快速的原型系统,没有提供JDBC驱动的数据库如Access

ype2 JAVA to Native API
利用开发商提供的本地库来直接与数据库通信。
Application--->JDBC Driver(Type2 jdbc driver)---->Native Database library---->Database
比Type1性能略好。

Type3 Java to net
Application--->Jdbc Driver(Type3 jdbc driver)----->java middleware--->JDBC Driver---->Database
具有最大的灵活性,通常由那些非数据库厂商提供,是四种类型中最小的。

Type4 JAVA to native dababase
Application--->Jdbc driver(type4 jdbc driver)----->database engine--->database
最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力。

5. 参考

[转载]如何写自己的Type3 JDBC 驱动-dinner1007-ITPUB博客.htm

浅谈4种类型的JDBC驱动程序.htm

参照Mysql JDBC 驱动源码实现自定义驱动 - 数据库.htm

Atitit.自定义jdbc驱动  支持jsql的更多相关文章

  1. JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表

    本文目录:       1.自定义JDBC框架 ——数据库元数据:DataBaseMetaData        2.自定义JDBC框架 ——数据库元数据:DataBaseMetaData       ...

  2. 开涛spring3(7.4) - 对JDBC的支持 之 7.4 Spring提供的其它帮助

    7.4  Spring提供的其它帮助 7.4.1  SimpleJdbc方式 Spring JDBC抽象框架提供SimpleJdbcInsert和SimpleJdbcCall类,这两个类通过利用JDB ...

  3. spring3: 对JDBC的支持 之 Spring提供的其它帮助 SimpleJdbcInsert/SimpleJdbcCall/SqlUpdate/JdbcTemplate 生成主键/批量处理

    7.4  Spring提供的其它帮助 7.4.1  SimpleJdbc方式 Spring JDBC抽象框架提供SimpleJdbcInsert和SimpleJdbcCall类,这两个类通过利用JDB ...

  4. Oracle、DB2、MySql、SQLServer JDBC驱动

    四种数据库JDBC驱动,还列出了连接的Class驱动名和Url Pattern,DB2包括Type 2.Type 3和Type 4三种模式.注意驱动包名称的大小写. Oralce连接驱动包名和URL ...

  5. MySQL JDBC驱动版本与MySQL数据库版本对应关系

    前言:前段时间发现在家使用和公司一样的mysql jdbc驱动版本发生了异常,原因:家里mysql数据库版本与公司不一致导致.查询了相关资料,发现mysql jdbc驱动版本与mysql数据库版本有一 ...

  6. Confluence 6 数据库 JDBC 驱动

    本页面提供了支持的数据库的所有 JDBC 驱动下载链接. 基于许可证的原因,我们没有将 MySQL 或 Oracle 的数据库驱动整合到 Confluence 中,因此你需要在 Confluence ...

  7. Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql

    Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8 ...

  8. Microsoft SQL Server JDBC 驱动程序支持矩阵

    本页包含 Microsoft SQL Server JDBC 驱动程序的支持矩阵和支持生命周期策略. Microsoft JDBC 驱动程序支持生命周期矩阵和策略 Microsoft 支持生命周期 ( ...

  9. 8.Spring对JDBC的支持和事务

    1.Spring对JDBC的支持 DAO : Spring中对数据访问对象(DAO)的支持旨在简化Spring与数据访问技术的操作,使JDBC.Hibernate.JPA和JDO等采用统一的方式访问 ...

随机推荐

  1. 【OpenStack Cinder】Cinder安装时遇到的一些坑

    最近需要安装Cinder组件,然后遇到了两个比较蛋疼的错误导致controller节点输入cinder service-list一直不能显示cinder节点上的cinder-volume服务. 错误1 ...

  2. 【字符串哈希】bzoj3555 [Ctsc2014]企鹅QQ

    枚举每个位置,给每个串的前半部分一个哈希值,后半部分一个哈希值,若是它们均相等,则视为这两个串相似. 每次转移之后,排序一下就行了. O(L*n*log(n)). #include<cstdio ...

  3. CentOS 6.9系统时间和硬件时间设置(转)

    总结一下hwclock,这个容易晕: 1)/etc/sysconfig/clock 文件,只对 hwclock 命令有效,且只在系统启动和关闭的时候才有用(修改了其中的 UTC=true 到 UTC= ...

  4. HDU 4606 Occupy Cities (计算几何+最短路+二分+最小路径覆盖)

    Occupy Cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. 我的vim配置---jeffy-vim-v2.2.tar

    http://files.cnblogs.com/pengdonglin137/jeffy-vim-v2.2.rar 修改了配色. 使用方法: 在Linux下,解压后,进入解压后的目录,执行./ins ...

  6. iOS:iOS为什么要用-all_load、-ObjC、-force_load

    为了减少工作量复用部分代码,于是乎我们开始选择重构整个项目,把可以公用的代码放在一起打包成一个静态库导入到其他的项目中使用. 介绍这部分内容的文章在网上很多,各位可以Baidu一下细看. 但是每次在加 ...

  7. http://www.ablanxue.com/shtml/201411/25904_1.shtml

    http://www.ablanxue.com/shtml/201411/25904_1.shtml

  8. win7系统下ping不是内部或外部命令

    win7下ping不是内部或外部命令,在使用java设置变量环境时,可能会遇到这样的问题,出现win7下ping不是内部或外部命令,是在设置变量环境是把一些设置删掉了的原因,请看在win7下怎么还原. ...

  9. Netty源码细节-accept、read(Linux os层 + Netty层代码细节)(转)

    原文:http://budairenqin.iteye.com/blog/2215899 这篇分析一下accept的细节, 我觉得网络IO相关开发很多时候不能仅仅局限于java层, 尤其从accept ...

  10. jQuery 全选 正反选

    <script src="http://code.jquery.com/jquery-1.4.4.min.js" type="text/javascript&quo ...