今天浏览bea的技术资料,发现上面说jdbc有4种驱动类型,如下图
之前都是直接使用jdbc的驱动,没有太注意底层的实现,今天查下资料,总结下,做个备忘吧。
Type1:JDBC-ODBC桥,由java应用通过ODBC调用本地的api去访问数据库,ODBC是微软推出的开放数据库互连(Open Database Connectivity)标准,貌似现在微软也不怎么对这个做更新了,速度方面,ODBC肯定不属于快一类了,JDBC-ODBC桥做了层转换,应该就更慢了,再者微软的东西一直都不具备跨平台型,至少我是没看到过有在Linux上用ODBC的。
Type2:JDBC-本地桥,由java调用本地的api(C/C++),很显然这种直接调用本地的api是要比调用ODBC会快一点,Type1和Type2由于都需要调用本地的api,自然也就需要数据库厂商提供的库文件。
Type3:JDBC-Net桥,这种驱动是基于网络server的,走中间件,不需要在客户端加载数据库厂商提供的代码库,这样也多了一层数据的转发,执行效率也不是最快的。
Type4:纯java JDBC驱动,直接把jdbc调用转换为符合相关数据库系统规范的请求,纯java对java的调用,应该是4种方式中最快的,因为是纯java,在平台一致性上也是最好的。