其它章節(jié)的翻譯參見:
http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4%E8%AF%B4%E6%98%8E%E4%B9%A6
=================================================================
序言
這個文檔鞏固了下面幾個規(guī)范的內(nèi)容:
“JDBC: Java的SQL類庫”
“JDBC 2.1 類庫”
“JDBC 2.0 標(biāo)準(zhǔn)擴(kuò)展類庫”
“JDBC 3.0 規(guī)范”
文檔介紹了JDBC 4.0 類庫的新特征和一些增強(qiáng)的特征。文檔根據(jù)不同特征劃分章節(jié),這樣可以更方便了解JDBC 4.0和3.0的不同之處。
讀者如果想了解JDBC類庫的詳細(xì)信息,可以參考JDBC的類庫文檔(Javadoc),該文檔可以由以下鏈接獲得:
http://java.sun.com/products/jdbc
==========================================================================
介紹
1.1 JDBC類庫
JDBC類庫提供了通過Java語言訪問關(guān)系數(shù)據(jù)庫的能力。Java程序通過JDBC可以執(zhí)行SQL語句,對獲取的數(shù)據(jù)進(jìn)行處理,并將變化了的數(shù)據(jù)存回數(shù)據(jù)庫。在分布式異構(gòu)環(huán)境中,我們還可以通過JDBC操縱多個數(shù)據(jù)源。
JDBC類庫基于X/Open SQL通用語言接口(CLI),ODBC也基于此。JDBC提供了一個使用方便的映射方案:從Java語言到X/Open 通用語言接口和SQL標(biāo)準(zhǔn)的抽象實體及概念的映射。
自1997年的產(chǎn)生至今,JDBC類庫已被廣泛的接受和實現(xiàn)。類庫的靈活性使得它可以有很多個具體實現(xiàn)。
1.2 平臺
JDBC類庫是Java平臺的一部分。4.0版分為兩個包:java.sql 和 javax.sql。這兩個包都包含在JSE(Java桌面版)和JEE(Java企業(yè)版)中。
1.3 適合讀者
該文檔主要面向下列產(chǎn)品的開發(fā)者:
1. JDBC驅(qū)動程序
2. 基于數(shù)據(jù)庫驅(qū)動提供三層架構(gòu)服務(wù)的應(yīng)用服務(wù)器
3. 使用JDBC類庫來提供服務(wù)的工具
該文檔想達(dá)到以下目的:
1.對使用JDBC類庫的開發(fā)者的一個介紹
2.作為開發(fā)基于JDBC的類庫的起始點(diǎn)
===============================================================
目標(biāo)
2.1 歷史
2.2 JDBC 4.0 之目標(biāo)
---1.與JEE和JSE平臺相處融洽
---2.與SQL:2003一致
---3.鞏固前述四個規(guī)范
---4.提供中立于廠商的通用功能
---5.主要只針對SQL類型的數(shù)據(jù)源
---6.提供高層類庫和工具的基礎(chǔ)設(shè)施
---7.保持簡單
---8.加強(qiáng)可靠性、可用性和可伸縮性
---9.保持向后兼容性
---10.與JDBC行集(RowSet)緊密聯(lián)系
---11.與連接器架構(gòu)(Connectors)兼容
---12.清晰描述JDBC需求
==================================================================
新特性概覽
3.1 變更概覽
JDBC 4.0 類庫在以下領(lǐng)域注入了變化和新的元素:
1.自動加載java.sql.Driver
DriverManager.getConnection方法被修改以利用JSE的服務(wù)提供者機(jī)制來自動加載JDBC驅(qū)動。這樣就不需要調(diào)用Class.forName方法了。
2.類庫使用更容易
添加了標(biāo)準(zhǔn)JDBC注釋。支持?jǐn)?shù)據(jù)集(DataSet),使Java應(yīng)用調(diào)用SQL數(shù)據(jù)源更加方便。
3.ROWID數(shù)據(jù)類型
添加了java.sql.RowID數(shù)據(jù)類型,使得JDBC程序可以訪問SQL ROWID。
4.支持本地字符集轉(zhuǎn)換(National Character Set Conversion)
添加了一些JDBC類型:NCHAR, NVARCHAR, LONGVARCHAR, NCLOB。對應(yīng)的方法setNString, setNCharacterStream, setNClob也被添加到PreparedStatement接口中。
5.增強(qiáng)了對BLOB和CLOB的支持
Connection接口添加了生產(chǎn)BLOB,CLOB和NCLOB對象的方法。PreparedStatement接口添加了通過InputStream插入BLOB的方法和使用Reader插入CLOB,NCLOB的方法。Blob, Clob和NClob現(xiàn)在可以通過free方法釋放資源。
6.SQL/XML和XML支持
SQL2003引入了用SQL表達(dá)XML數(shù)據(jù)的概念。一些類庫被添加進(jìn)來以支持應(yīng)用對這些數(shù)據(jù)的訪問。
7.包裝器(Wrapper)模式
添加了解包JDBC實現(xiàn)的能力,使開發(fā)者可以利用在廠商實現(xiàn)中提供的非標(biāo)準(zhǔn)JDBC方法。
8.加強(qiáng)的SQLException
添加對JSE鏈?zhǔn)疆惓5闹С帧?/SPAN>SQLException現(xiàn)在支持Iterable接口,所以我們可以在for-each循環(huán)里讀取SQLExceptions。新添加了兩類SQL異常:SQLTransientException和SQLNonTransientException。每個類都提供映射到普通SQLState類型值(譯者注:SQLState?)的子類。
9.連接管理
Connection和Statement接口得到了增強(qiáng),以利于對連接狀態(tài)的跟蹤,并增加在池環(huán)境中管理Statement對象的靈活性。
10.JDBC類庫的變化
下面的JDBC接口被修改:
---10.1 Connection
添加了下列方法:createBlob, createClob, createNClob, createQueryObject, isValid, createXML, getClientInfo, setClientInfo。
---10.2 CallableStatement
添加了下列方法:getRowId, setRowId, getNClob, setNString, setNCharacterStream, setNClob, getSQLXML, setSQLXML。重載了setClob和setBlob方法。
---10.3 DatabaseMetaData
添加了下列方法:getRowIdLifetime, autoCommitFailureClosesAllResultSets, providesQueryObjectGenerator, getClientInfoProperties, supportsStoredFunctionsUsingCallSyntax. 重載了getSchemas方法。
---10.4 PreparedStatement
添加了下列方法:setRowId, setNString, setNCharacterStream, setSQLXML, isPoolable, setPoolable, setNClob。重載了setClob和setBlob方法。
---10.5 ResultSet
添加了下列方法:getHoldability, getRowId, updateRowID, getNClob, isClosed, updateNString, getSQLXML, updateSQLXML, updateNClob。
---10.6 Statement
添加了isClosed和getResultSetHoldability方法。
---10.7 DataSource
添加了createQueryObject方法。
---10.8 PooledConnection
添加了addStatementEventListener和removeStatementEventListener方法。
====================================================================
概覽
JDBC類庫使得Java程序可以訪問多個數(shù)據(jù)源,但在大多數(shù)情況下,這個數(shù)據(jù)源是關(guān)系數(shù)據(jù)庫,并且通過SQL訪問。然而,實現(xiàn)JDBC技術(shù)的驅(qū)動也可以基于其它的數(shù)據(jù)源,包括遺留文件系統(tǒng)和面向?qū)ο蟮南到y(tǒng)。
JDBC類庫的主要目的就是提供應(yīng)用程序訪問多種數(shù)據(jù)源的標(biāo)準(zhǔn)接口。
這一章介紹JDBC類庫的一些關(guān)鍵概念,并描述JDBC應(yīng)用的兩個通用環(huán)境及其中的功能實現(xiàn)。
4.1 創(chuàng)建連接
JDBC類庫中的Connection接口代表了底層數(shù)據(jù)源的一個連接。
在典型場景中,JDBC應(yīng)用程序使用兩種機(jī)制連接到數(shù)據(jù)源:
1.DriverManager --- 這個類在JDBC 1.0中引入,它使用硬編碼的URL來加載驅(qū)動。
2.DataSource --- 這個接口在JDBC 2.0可選包中引入。它優(yōu)于DriverManager方式,因為它隱藏了數(shù)據(jù)源的詳細(xì)信息。我們通過設(shè)置DataSource的屬性來標(biāo)明它代表的數(shù)據(jù)源。當(dāng)getConnection方法被調(diào)用時,DataSource對象會返回一個對應(yīng)的連接。我們可以通過改變DataSource的屬性來使它指向另一個數(shù)據(jù)源,而不是改變程序代碼。而且,如果DataSource的實現(xiàn)改變了,使用它的應(yīng)用程序代碼不需要改變。
JDBC類庫也定義了兩個DataSource的擴(kuò)展,用來支持企業(yè)級應(yīng)用,如下:
1.ConnectionPoolDataSource --- 支持物理連接的緩存和重用,這樣可以提高應(yīng)用的性能和可伸縮性。
2.XADataSource --- 提供可以使用在分布式事務(wù)中的連接。
版權(quán)所有 羅明