<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2007年5月22日

    第四章    概述

    JDBC應用程序接口為Java編程語言訪問一個或多個數據源提供了一種途徑。在大多數情況下,數據源是用SQL訪問的關系數據庫管理系統。盡管如此,支持JDBC技術的驅動程序也可以訪問其他的數據源,包括遺留文件系統(legacy file systems)和面向對象的系統。JDBC應用程序接口的一個主要動機就是為應用程序可以訪問廣泛的數據源提供標準的應用程序接口(API)

    這一章介紹了一些JDBC應用程序接口的關鍵概念。除此之外,還描述了JDBC應用程序的兩種運行環境,以及討論了不同的功能角色在每個運行環境中是怎樣被實現的。兩層和三層邏輯結構能夠在大量的物理結構上被實現。

    4.1建立一個連接

    JDBC應用程序接口定義了Connection接口來表示一個到潛在數據源的連接。

    在典型情況下,JDBC應用程序會用兩種方式中的一種來連接到目標數據源:

             DriverManager —— 這個被充分實現的類在最初的JDBC1.0應用程序接口中介紹過,它需要應用程序裝載一個特定的驅動,這一驅動使用硬編碼的統一資源定位器(URL)

             DataSource —— 這個接口在JDBC2.0可選包應用程序接口(Optional Package API)中介紹過。與DriverManager相比它被作為首選,因為他允許潛在數據源的細節對應用程序透明。一個DataSource對象的屬性被設置以后可以表示一個特定的數據源。當它的getConnection方法被調用以后,Datasource的實例將會返回一個到數據源的連接。應用程序可以通過改變Datasource對象的屬性來連接到不同的數據源,而不需要改變應用程序的代碼。同樣的,一個DataSource可以在不改變使用它的應用程序的代碼的前提下被改變。

    JDBC應用程序接口還定義了DataSource接口的兩個重要擴展來支持企業級的應用程序。這些擴展就是以下的兩個接口:

             ConnectionPoolDataSource —— 支持物理連接高速緩沖和重用,物理連接改善了應用程序的性能和可伸縮性。

           XADataSource —— 提供了在分布式事務中可共享的連接。

    4.2執行SQL表達式以及操作結果集

    一旦一個連接被建立,那么使用這個連接的應用程序就可以用JDBC應用程序接口對目標數據源進行查詢和更新。JDBC3.0應用程序接口提供了對大多數實現了的SQL99特性的支持。因為不同的廠商都在不同的級別支持這些特性,而JDBC應用程序接口則包括了DatabaseMetadata接口。應用程序能夠使用此接口來確定它們使用的數據源是否支持某一特性。JDBC應用程序接口還定義了轉義語法使得應用程序可以訪問非標準的廠商定義的特性。轉義語法的優點是可以使得JDBC應用程序能夠像本地應用程序一樣訪問相同的特性,而同時又能夠保證應用程序的可移植性。

    應用程序使用Connection接口中的方法來定義事務的屬性和創建StatementPreparedStatementCallableStatement對象。這些表達式被用來執行SQL表達式和檢索結果集。ResultSet接口封裝SQL的查詢結果。表達式也可以被批量執行,即允許應用程序向數據源提交多條更新語句作為執行的單個單元。

    JDBC應用程序接口用RowSet接口擴展了ResultSet接口,從而為列表數據提供了一個容器,而這樣比標準結果集更加通用。一個Rowset對象是一個JavaBeans™組件,它可以在沒有連接到數據源的情況下對它進行操作。例如,一個RowSet可以被串行化,因此也可以在網絡之間被傳輸,這對那些想不需要JDBC驅動和數據源連接而對表格數據進行操作的小型客戶端是非常有用的。RowSet的另一個特性是能夠包含一個閱讀器來訪問任意表格形式的數據,而不僅僅是關系數據庫中的數據。更進一步的,一個RowSet對象可以在當它與數據源失去連接的時候更新它的行。它可以包含一個記錄器,把那些更新寫回到潛在的數據源。

    4.2.1      支持SQL高級數據類型

    JDBC應用程序接口定義了標準的從SQL數據類型到JDBC數據類型的映射。這包括對SQL99高級數據類型的支持,諸如BLOBCLOBARRAYREFSTRUCTDISTINCTJDBC驅動也可以為用戶定義類型(UDTs)實現一個或多個自定義類型映射。在這個映射中,用戶定義類型(UDT)被映射到一個Java類中。JDBC3.0應用程序接口還添加了對外部數據管理的支持,例如一個在數據源外部的文件中的數據。

    4.3兩層結構模型

    一個兩層結構模型按功能可以被劃分為客戶端層和服務器層,見圖4-1



    4-1 兩層結構模型

    客戶端層包括了應用程序和一個或多個JDBC驅動,應用程序負責對以下職責進行處理:

            表現層邏輯

             業務邏輯

             對多重事務和分布式事務的管理

             資源管理

    在這個模型中,應用程序直接與JDBC驅動交互,包括建立和管理物理連接以及處理潛在的特定的數據源的細節。應用程序可以采用特殊的實現采用不標準的特性或性能調整的優點。

    這個模型的一些缺點包括:

             伴隨著基礎結構和系統級的功能使得表現層邏輯和業務層邏輯不能分離。這就為使用一個好的體系結構來編寫可維護性好的產品代碼帶來了困難。

             因為采用了特定的數據庫實現,降低了應用程序的可移植性。而那些要求連接到多個數據庫的應用程序必須知道不同廠商的數據庫之間的差異。

             限制了可伸縮性。通常地,應用程序在結束之前將保持一個或多個到數據庫的物理連接,這樣就限制了它支持并發應用程序的數量。在這個模型中,性能,可伸縮性和可用性受到JDBC驅動和相應的數據源的限制。如果一個應用程序采用了多個驅動,它也可能需要知道每種驅動和數據源解決這些限制的不同方法。

    4.4三層結構模型

    三層模型結構為業務邏輯和基礎結構引入了中間層服務器,見圖4-2


     

    4-2 三層結構模型

    這個體系結構被設計來為企業級的應用程序提高性能,可伸縮性和可用性。三個層的功能分別為:

    1、                客戶端層 —— 為程序和人的交互實現表現層邏輯的一個層。Java程序,瀏覽器和掌上電腦(PDAs)是常見的客戶端實例。客戶端與中間層應用程序交互而且不需要包含任何與基礎結構和數據源相關的功能。

    2、                中間層服務器 —— 中間層包括:

            和客戶端以及業務邏輯層交互的應用程序。如果該應用程序能夠與數據源交互,和低級的驅動應用程序接口相比,他將更多地處理像DataSource對象和邏輯連接這些高級抽象。

             為廣泛的應用程序提供基礎的應用程序服務器。這包括管理和共享物理連接、事務管理和屏蔽不同JDBC驅動之間的差異。最后一點使得編寫可移植性良好的應用程序更加簡單。J2EE服務器可以實現應用程序服務器這一角色。應用程序服務器可以實現被應用程序所使用的高級抽象和直接與JDBC驅動交互。

           JDBC驅動提供到潛在數據源的連接。每個驅動程序在它所使用的數據源所支持的特性基礎上實現標準的JDBC應用程序接口。驅動層可以屏蔽標準SQL99語法和數據源所支持的本地語法之間的差異。如果數據源不是一個關系數據庫管理系統,那驅動程序則使用應用程序服務器實現關系層。

    3、                潛在數據源 —— 即數據駐留層。它包括關系型數據庫管理系統,遺留文件系統(legacy file systems),對象型數據庫管理系統,數據倉庫,電子表格或者其他形式的數據。唯一的要求就是有相應的支持JDBC應用程序接口的驅動程序。

    4.5在J2EE平臺中的JDBC

        J2EE組件,例如JavaServer™ PagesServlets和企業級Java Beans™EJB™)組件,常常需要使用JDBC應用程序接口來訪問關系型數據。當J2EE組件使用了JDBC應用程序接口以后,那么可以使用相應的容器來管理它們的事務和數據源。這意味著J2EE組件開發人員可以不直接使用JDBC應用程序接口的事務管理和數據源管理的工具。具體細節請參考J2EE平臺規范。

    posted @ 2007-05-22 21:18 LittleBug 閱讀(562) | 評論 (0)編輯 收藏

    第三章 新特性概述
    3.1變化

    JDBC3.0在以下領域有所改變:

         保存點(Savepoint)支持

    添加了保存點接口,此接口包含了新的方法來對一個指定的保存點進行設置,釋放或者回滾事務。

          通過連接池重用預處理語句(Prepared Statments)

    為部署者提供了通過連接來控制預處理語句怎樣被共享和重用的能力。

         配置連接池

    ConnectionPoolDatasource接口定義了大量屬性。這些屬性能夠描述通過Datasource對象創建的PooledConnection對象怎樣被共享。

         對參數元數據的檢索

    添加了ParameterMetadata接口,此接口描述了預處理語句(Prepared Statements)的參數個數,類型和屬性。

       對自動產生鍵的檢索

    添加了從那些能夠自動產生值的列來檢索值的手段。

         打開多個結果集(ResultSet)對象的能力

    添加了getMoreResults(int)這一方法,此方法提供了一個參數,這一個參數定義了Statement對象返回的ResultSet對象在返回任何并發的ResultSet對象之前是否應該被關閉。

         通過名字向CallableStatment對象傳遞參數

    添加了一個新方法,此方法可以通過一個字符串來標識CallableStatement對象的參數。

         對可控制游標的支持

    添加了指定ResultSet對象的可控制游標的能力。

         布爾數據類型

    添加了數據類型java.sql.Types.BOOLEANBOOLEANBIT是在邏輯上等價的。

         BlobClob對象中的數據進行內部更新

    添加了新的方法允許BlobClob對象包含的數據被改變。

         檢索和更新被Ref對象引用的對象

    添加了新的方法來檢索被Ref對象引用的對象。也添加了更新被Ref對象引用的對象的能力。

         更新包含BLOB,CLOB,ARRAYREF類型的列

    ResultSet接口添加了updateBlobupdateClobupdateArrayupdateRef方法。

         DATALINK/URL數據類型

    添加了新的數據類型java.sql.Types.DATALINK,允許JDBC驅動存儲和檢索對外部數據的引用。

         轉化組(Transform groups)和類型映射

    描述了轉化組的作用和在元數據中這一作用是怎樣被反映的。

         JDBC SPI(服務提供者接口)和連接器體系結構的關系

    在第19章“和連接器的關系”中描述了JDBC SPI和連接器體系結構的關系。

         數據庫元數據(DatabaseMetadata) APIs

    為了檢索SQL類型體系添加了元數據。具體細節參見此規范。

    參見第五章“類和接口”中受到這些改變的影響的類和接口的清單。

    posted @ 2007-05-22 21:14 LittleBug 閱讀(364) | 評論 (0)編輯 收藏

    第二章 目標

    JDBC應用程序接口是成熟的技術,它早在19971月就被提出。在它最初發行的時候,JDBC應用程序接口注重于提供一個基本的調用級的到SQL數據庫的接口。而JDBC2.1規范和2.0可選擇包規范則擴展了JDBC的范圍。這兩個規范包括了對更多高級應用程序的支持和使用JDBC應用程序接口的應用程序服務器為了運行于它們之上的應用程序的性能所要求的新特性的支持。

    JDBC3.0規范的總體目標是補上那些在很少方面的功能缺失。以下的清單列出了JDBC以及JDBC3.0所特有的目標和設計原理:

    1、 適合J2EEJ2SE平臺

    JDBC應用程序接口是Java平臺的組成技術。因此,JDBC3.0應該和Java2企業版和Java2標準版的總體方向保持一致。

    2、 SQL99保持一致

    JDBC應用程序接口提供了從Java編寫的應用程序到標準SQL的編程訪問。在JDBC2.0開發的過程中,SQL99規范還處在一種變化不定的情況下。現在SQL99規范是一個公開的標準,它包括了被數據庫管理系統廠商廣泛支持的以及那些被很少廠商支持的特性。JDBC3.0的目標就是實現SQL99中那些極可能在將來五年里會被廣泛支持的特性的子集。

    3、 合并之前版本的規范

    此規范合并了之前三版JDBC規范以提供一份獨立的關于JDBC應用程序接口的規范。

    4、 提供廠商中立的對普通特性的訪問

    JDBC應用程序接口努力實現對被不同廠商普遍支持的特征的高性能的訪問。目標是在一定程度上提供本地應用程序能完成的對特性的訪問。因此,JDBC應用程序接口必須足夠全面和靈活以顧及大量的實現方式。

    5、 繼續保持對SQL的注重

    JDBC應用程序接口一直注重于從Java編程語言到關系型數據的訪問。JDBC3.0將繼續注重于這一點。JDBC3.0不排除和其它技術交互,包括XMLCORBA和非關系型數據,但是最主要的目標將仍然是和關系型數據和SQL交互。

    6、 為工具和更高層的應用程序接口提供基礎

    JDBC應用程序接口提供標準的應用程序接口來訪問廣泛的數據源或者保留系統(Legacy Systems)。通過JDBC應用程序接口的抽象,實現方式的不同之處也變得透明了。這使得JDBC對于那些想生產輕便工具和應用程序的廠商來說,是一個不可多得的目標平臺。

    因為JDBC是一個從Java編程語言到SQL的調用級的接口,所以,JDBC應用程序接口也適合作為那些像EJB2.0容器管理持久和SQLJ(注:SQLJ是一個與Java編程語言緊密集成的嵌入式SQL版本)這些高級程序的基礎。

    7、 保持它的簡單

    JDBC應用程序接口被設計為簡單易懂的接口,但是通過它能夠編寫更復雜的實體。這一目標是通過定義許多簡潔,擁有單一功能的方法來代替通過標志參數控制的少量的復雜而擁有多功能的方法來實現的。

    8、 增強可靠性、實用性和靈活性

    可靠性、實用性和靈活性是J2EEJ2SE平臺的主題,也是Java平臺未來的方向。JDBC3.0應用程序接口通過增強對若干領域的支持體現了這些主題,這些領域包括資源管理,通過邏輯連接重用預處理語句(prepared statements)以及錯誤處理。

    9、 保留對現有應用程序和驅動程序的向后兼容性

    現有的支持JDBC技術的驅動和使用這些驅動的應用程序在支持JDBC3.0Java虛擬機上必須能夠繼續工作。對于那些只使用了先前版本的JDBC應用程序接口的特性,但是沒有使用JDBC2.0反對的特性的應用程序,將不需要任何改變而正常運行。現有的應用程序移植到JDBC3.0技術上是件簡單的事情。

    10、允許對連接器的向前兼容

    連接器的體系結構定義了一個標準的方法來打包和部署資源適配器。這使得J2EE容器可以通過外部資源集成連接器的連接、事務和安全管理。

    JDBC3.0應用程序接口提供了從JDBC驅動程序移植到連接器體系的途徑。這使得那些使用JDBC技術的產品的廠商更多地轉移到使用連接器應用程序接口(Connector API)成為可能。希望這些廠商會在他們現有的數據源工具上寫上“資源管理器封裝”,這樣這些工具就能夠在連接器框架中被重用。

    11、 清楚地規定需求

    JDBC規范的需求應該是明確的和容易識別的。JDBC3.0規范和Javadoc文檔規定了哪些特性是必需 的,而哪些特性是可選的。

    posted @ 2007-05-22 21:12 LittleBug 閱讀(569) | 評論 (0)編輯 收藏

    第一章 緒論

    1.1   JDBC應用程序接口

    JDBC™應用程序接口提供了從Java™編程語言編程訪問關系數據的能力。通過使用JDBC應用程序接口,Java編程語言寫的應用程序能夠執行SQL表達式,檢索結果集和把改變傳回潛在的數據源。JDBC應用程序接口還可以和在分布式的、異源的環境中的多種數據源進行交互。

    JDBC應用程序接口基于X/Open SQL CLIODBC也是建立在此基礎上。JDBC提供了從Java編程語言到X/Open CLISQL標準定義的抽象和概念的自然、簡單的映射。

    自從19971月被提出,JDBC應用程序接口就被廣泛接受和實現。它的靈活性考慮到了大量的實現方式。

    1.2   平臺

    JDBC應用程序接口是Java平臺的一部分,Java平臺包括了Java™2標準版(J2SE™)和Java2™企業版(J2EE™)。JDBC3.0被分成了兩個包:java.sqljavax.sql。這兩個包都被包括到了J2SEJ2EE平臺中。

    1.3 目標讀者

    此規范主要面向以下幾類產品的廠家:

         實現JDBC應用程序接口的驅動程序

         提供驅動層以上的中間層服務的應用程序服務器

         使用JDBC應用程序接口提供服務的工具,如應用程序生成器

           此規范也打算為以下目的服務:

         在他們的程序中使用JDBC應用程序接口的最終用戶的一份說明書

         開發基于JDBC應用程序接口的其它應用程序接口的程序員的一個起點

    1.4   感謝

    作者要感謝以下專家組成員,因為他們為此規范做出了寶貴的貢獻:

          ElhamChandler, Informix

          Stefan Dessloch, IBM

          John Goodson, Merant

          Jay Hiremath, Bluestone

          Viquar Hussain, Inprise

          Prabha Krishna, Oracle

          Scott Marlow, Silverstream

          Kuldip Pathak, Informix

          David Schorow, Compaq

          Yeh-Heng Sheng, Informix

          Mark Spotswood, BEA

          Satish Viswanatham, iPlanet

           Maydene Fisher 曾經很有耐心地把我們寫的東西翻譯成英語。

           Jennifer Ball 也從書寫方式轉變成為我們所希望的用圖表表示的方式來表達。

           Graham Hamilton, Rick Cattell, Mark Hapner, Seth White以及許多其他曾經為JDBC技術工作的人

           使此規范的出版成為可能。

    posted @ 2007-05-22 21:10 LittleBug 閱讀(420) | 評論 (0)編輯 收藏

    僅列出標題  
    主站蜘蛛池模板: 亚洲综合AV在线在线播放| 午夜一级毛片免费视频| 亚洲精品无码成人片久久| 亚洲国产免费综合| 国产偷国产偷亚洲高清日韩| 一级特黄aaa大片免费看| 亚洲国产精品一区二区第一页免 | 在线涩涩免费观看国产精品| 亚洲欧洲精品无码AV| 中文字幕乱码一区二区免费| 在线观看亚洲一区二区| 成年网站免费视频A在线双飞| 亚洲人成77777在线播放网站不卡| 亚洲成在人线aⅴ免费毛片| 亚洲人成无码网站在线观看| 免费a级毛片永久免费| xxxxx做受大片视频免费| 亚洲人成人77777网站| 色欲A∨无码蜜臀AV免费播| 亚洲日韩国产精品无码av| 皇色在线视频免费网站| 国产AV日韩A∨亚洲AV电影| 国产精品V亚洲精品V日韩精品| 91在线免费观看| 91亚洲精品麻豆| 四虎在线播放免费永久视频 | 免费精品99久久国产综合精品| 日产亚洲一区二区三区| 毛片免费观看视频| 一级一黄在线观看视频免费| 亚洲AV成人一区二区三区AV| 97在线线免费观看视频在线观看| 在线亚洲v日韩v| 亚洲电影一区二区三区| 处破痛哭A√18成年片免费| 国产免费内射又粗又爽密桃视频| 亚洲欧洲日产国产最新| xvideos亚洲永久网址| 8x8×在线永久免费视频| 久久久亚洲精华液精华液精华液 | 激情无码亚洲一区二区三区 |