classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的區(qū)別,之間的差異
在使用Oracle JDBC驅(qū)動(dòng)時(shí),有些問(wèn)題你是不是通過(guò)替換不同版本的Oracle JDBC驅(qū)動(dòng)來(lái)解決的?最常使用的ojdbc14.jar有多個(gè)版本,classes12.jar有多個(gè)版本你了解嗎?
連接類型:
1、JDBC OCI: oci是oracle call interface的縮寫(xiě),此驅(qū)動(dòng)類似于傳統(tǒng)的ODBC 驅(qū)動(dòng)。因?yàn)樗枰狾racle Call Interface and Net8,所以它需要在運(yùn)行使用此驅(qū)動(dòng)的JAVA程序的機(jī)器上安裝客戶端軟件,其實(shí)主要是用到orcale客戶端里以dll方式提供的oci和服務(wù)器配置。
2、JDBC Thin: thin是for thin client的意思,這種驅(qū)動(dòng)一般用在運(yùn)行在WEB瀏覽器中的JAVA程序。它不是通過(guò)OCI or Net8,而是通過(guò)Java sockets進(jìn)行通信,是純java實(shí)現(xiàn)的驅(qū)動(dòng),因此不需要在使用JDBC Thin的客戶端機(jī)器上安裝orcale客戶端軟件,所以有很好的移植性,通常用在web開(kāi)發(fā)中。
-------------------------------------------------------------------------------
隨Oracle 8i發(fā)布的Oracle JDBC驅(qū)動(dòng)8.1.7版本
classes111.zip 適用于JDK 1.1.x
classes12.zip 適用于JDK 1.2.x
只有zip文件,無(wú)jar文件。
-------------------------------------------------------------------------------
隨Oracle 9i發(fā)布的Oracle JDBC驅(qū)動(dòng)9.2.0版本
classes111.jar 適用于JDK 1.1.x
classes12.jar 適用于JDK 1.2 and JDK 1.3 (我的項(xiàng)目環(huán)境JDK1.6,oracle 10g,windows,用了這個(gè)目前沒(méi)發(fā)現(xiàn)問(wèn)題)
ojdbc14.jar 適用于JDK 1.4
classes111.zip 適用于JDK 1.1.x
classes12.zip 適用于JDK 1.2.x
***_g.jar 只是用javac -g編譯,生成所有調(diào)試信息,其它全一樣
新特性:
1、Thin連接類型的驅(qū)動(dòng)對(duì)BFILE,BLOB,CLOB 提供直接支持,以前通常是調(diào)用PL/SQL來(lái)實(shí)現(xiàn)。
2、支持JDBC 3.0 特性
3、ojdbc14.jar 支持JDK 1.4
4、ojdbc14.jar 支持保存點(diǎn)(Savepoint)
5、可以在不同的連接池中使用PreparedStatement,這是重要的性能提升
從此以后新的jar文件的命名采用 ojdbc<jdk ver>.jar 格式 ,以前的jar文件名稱不變
-------------------------------------------------------------------------------
隨Oracle 10.2發(fā)布的Oracle JDBC驅(qū)動(dòng)10.2版本
classes12.jar 適用于JDK 1.2 and JDK 1.3.
ojdbc14.jar 適用于 JDK 1.4 and 5.0
***_g.jar 只是用javac -g編譯,生成所有調(diào)試信息,其它全一樣
特點(diǎn):
1、全面支持JDK 1.5
2、支持JDBC 3.0
-------------------------------------------------------------------------------
隨Oracle 11.1發(fā)布的Oracle JDBC驅(qū)動(dòng)11.1版本
ojdbc5.jar: 適用于jdk5
ojdbc6.jar: 適用于jdk6 (如果你使用jdk1.5,就不能使用這個(gè)驅(qū)動(dòng))
***_g.jar 只是用javac -g編譯,生成所有調(diào)試信息,其它全一樣
新特性:
1、ojdbc6.jar:支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML類型沒(méi)有被支持。
ojdbc5.jar:全面支持使用JDK5 和 JDBC 3.0 。
2、建議使用oracle.jdbc.OracleDriver類,不建議使用oracle.jdbc.driver.OracleDriver。從9.0.1開(kāi)始的每個(gè)release都推薦使用oracle.jdbc。
3、j2se 1.2,1.3,1.4不再支持。11R1不再包括這些版本的jar和zip,如果仍然使用這些版本,可以繼續(xù)使用10gR2的jdbc。
4、11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL認(rèn)證機(jī)制.
5、支持ANYDATE和ANYTYPE類型。這兩種類型自9i引入,11R1前,程序員只能通過(guò)PL/SQL操作。
6、高級(jí)隊(duì)列支持。11R1提供了訪問(wèn)AQ的高性能接口。
7、支持?jǐn)?shù)據(jù)庫(kù)變更通知。
8、Thin和OCI的數(shù)據(jù)庫(kù)啟動(dòng)和關(guān)閉。11R1提供了這樣的方法來(lái)啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù)。
9、新的工廠方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了創(chuàng)建Oracle對(duì)象的工廠方法。
包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。
---------------------------------------------------
總體講新版本的JDBC驅(qū)動(dòng) 性能強(qiáng)、很多bug被發(fā)現(xiàn)并已解決。
我遇到的,之前使用ojdbc14.jar(不記得哪個(gè)版本了)批量插入10萬(wàn)條,實(shí)際只插入了3萬(wàn)多條,其它的丟失了,換ojdbc6.jar后,一次commit批量插入100萬(wàn)條也OK了。
盡量使用和數(shù)據(jù)庫(kù)版本一致的驅(qū)動(dòng),有bug時(shí),換高版本的JDBC驅(qū)動(dòng)試試 。
如果一個(gè)jdbc的jar包你不知道是那個(gè)版本的,可以解壓這個(gè)jar包,再M(fèi)ETA-INF\MANIFEST.MF 文件中找"Oracle JDBC Driver version - 10.1.0.2.0"字樣,就知道版本了
---------------------------------------------------
參考:
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc817-100207.html
http://www./helix/people/genoud/ENSJAVA/cours/Java/JDBCORacle9.2.0.1/jdbc_readme9201.html
http://www.oracle.com/technetwork/database/enterprise-edition/readme-10201-097623.html?ssSourceSiteId=otncn
http://www.oracle.com/technetwork/database/enterprise-edition/111070-readme-083278.html?ssSourceSiteId=otncn