现在的位置: 首页 > 综合 > 正文

高性能数据库的访问,java程序员心中永远的痛(JDBC访问数据库的4中方式及数据库连接池中间件的设计和实现)(1)

2013年03月31日 ⁄ 综合 ⁄ 共 1382字 ⁄ 字号 评论关闭

一说到java语言访问数据库,大家自然就会想到“JDBC”。事实上用java访问数据库给很多java程序员留下的印象是编码复杂,效率低下。编码复杂我没觉得,效率确实是个问题,java可以通过4中方式访问数据库,它们分别是:JDBC-ODBC桥,java驱动,JDBC-native桥,JDBC-network桥。JDBC-ODBC桥,JDBC-native桥,访问效率高,但却与平台有关,使程序丧失了跨操作系统平台的移植性。而另外2种虽然可以实现跨操作系统平台,却存在效率问题或者并不适用所有的数据库。同时java不能编译可执行的机器码,它需要在虚拟机中解释执行,造成了java程序的整天运行效率低。那么这4中方式是怎么样工作的呢?

类型1JDBC-ODBC桥接

JDBC刚产生时,JDBC-ODBC桥接是非常有用的。通过它,开发者可以使用JDBC来访问一个ODBC数据源。缺点是,它需要在客户机上安装有一个ODBC驱动,该客户端通常运行在windows系统。使用这一类的驱动器,你就会失去JDBC平台无关的好处。此外ODBC驱动器需要客户端的管理。Sun并不赞成在大型系统中使用这种方式。它提供一种把JDBC调用映射到ODBC的调用方法。客户端必须安装ODBC驱动程序作为一组本机库。由于DBMS是流行的DBMS接口标志,所以在JDBC刚产生时是比较流行的。

其模型如下:

 

 

类型2JDBC-native桥接(本地APIjava驱动程序)

JDBC-native桥是提供了一个建立在本地数据库驱动上的JDBC接口没有使用ODBCJDBC驱动将标准的JDBC调用了转变为对数据库API的本地调用。使用类型2的驱动也会也会使失去JDBC的平台性无关的好处,并且需要安装客户端的本地代码。这种驱动方式有一部分API是用java编写的,它把客户端的JDBC调用转换为Oracle Sybase DB2等主流数据库API的本机调用。

 

 

类型3JDBC-network桥(纯java驱动程序)

JDBC-network桥不需要客户端的数据库驱动。它使用网络服务器的中层来访问一个数据库。这会引出诸如负载均衡,连接池技术,数据缓冲也是可能的。由于类型3的驱动通常可能带来相对小的下载时间,它是平台无关的,并且不需要客户端的安装和管理,因此很适合做internet应用。JDBC调用被转换成了与DBMS无关的网络协议,然后由某个服务器将这种协议转换为一种DBMS协议。

 

类型4:纯java驱动

类型4使用纯的java数据库驱动来提供直接访问数据库操作。由于类型4驱动运行在客户端,并且直接访问数据库。因此运行在这个模式暗示要使用一个2层体系。要在一个n层体系中使用类型4驱动,可以通过包含数据库访问代码的ejb,并且让该ejb为它的客户端提供一个数据库无关的服务。将JDBC调用转换为可直接被DBMS调用的网络协议,但这些协议是专用的,不同的数据库有不同的驱动程序。

 

 

第三,四种是可以跨平台的。

 

Class12.jarOracle10g对应的数据库连接驱动包。

 

通常使用数据库连接池技术,既能够保持程序的可移植,同时提高数据库访问的性能。

数据库连接池可以通过配置服务器的server.xmltomcat是这样的),当然也可以自己提供数据库连接池的中间件。这儿实现第二种。

抱歉!评论已关闭.