亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

分享如何寫自己的Type3 JDBC 驅動

2019-11-18 12:37:12
字體:
來源:轉載
供稿:網友

  第1部分:應用程序連接數據的簡單方法
  
  前言

  
  你想不想寫自己的JDBC驅動,或者是否想把現在的JDBC驅動轉換成Type3的驅動呢?Type3 的驅動主要用于無需客戶端設置的Internet/Intrant應用程序中,并且提供靈活的系統治理工具。本文中Nitin Nanda 和 Sunil Kumar描述了JDBC驅動的架構并概略講解了Type3 JDBC驅動的三層結構。并演示了如何創建自己的Type3 JDBC驅動。
  
  在java中訪問數據庫系統你需要一個JDBC驅動。你可以自己寫Type1到Type4的JDBC驅動,可以是純Java的方式或者使用Java結合本地接口方法的復合方式。產品化的方式趨向于利用純Java技術創建Type3或Type4的驅動程序。在Internet應用程序中訪問數據庫的效率和穩定性成為了要害因素,這時Type3 JDBC驅動顯示出了它的優勢。所以,要開發高效的、易部署的Internet應用,你通常需要將現在的Type1或Type2類型的JDBC替換成Type3類型的。
  
  整個文章分為3個部分:
  
  1.    應用程序連接數據庫的簡單方法。
  
  2.    使用自定義的JDBC驅動編譯、部署、訪問數據。
  
  3.    通過高級的日志功能、連接池、預處理數據集增強自定義的JWDriver的性能。
  
  在這三個部分中,我們首先介紹了我們自己的Type3 JDBC驅動的結構和設計(第一部分),然后講了如何實現和部署整個驅動(第二部分),最后講解了如何在其中增加一些高級特性,比如SQL日志、連接池等(第三部分)。
  
  注重:
  
  在開始之前,也許你可以先看一下Nitin Nanda's的"JDBC Drivers in the Wild",這更有利于你理解JDBC驅動。
  
  JDBC驅動的結構
  
  JDBC為通用的數據庫訪問提供了一種程序級的接口。在一個特定的數據庫環境下使用JDBC API你需要一個JDBC驅動來完成他們直接的協調運行。JDBC被分為四種類型或者說層次。每一個類型都有一個JDBC實現,以便滿足日益增加的對平臺獨立性、執行效率和可治理性的要求。這四種類型分別是:
  
  Type1:JDBC-ODBC(開方數據庫連接)橋。
  
  Type2:本地API,部分的Java驅動。
  
  Type3:網絡協議,完全的Java 驅動。
  
  Type4:本地協議,完全的Java驅動。
  
  所有的JDBC驅動都要實現下面四個JDBC類:Driver、Connection、Statement和ResultSet。包含在java.sql包種DriverManager類用于治理被加載的驅動??蛻舳藨贸绦蛲ㄟ^它獲得數據庫連接。JDBC的Driver通過下面的方法加載:
  
  Class.forName("com.jw.client.JWDriver");
  
  當這個Driver被加載時它的staic部分的代碼就會執行,通過DriverManager注冊這個驅動?,F在,只要客戶端應用程序通過DriverManger.getConnection()方法,DriverManager就會轉而調用Driver.connect()方法。每一個JDBC驅動必須實現java.sql.Driver接口。所以,JDBC驅動的Driver.connect方法會首先檢測當前的驅動Url是否正確,然后會通過connet()方法返回一個Connection對象。
  
  簡單Type3驅動的結構
  
  為了向你展示Type3驅動的內容結構,我創建了一個自己的Type3JDBC驅動。我們的Type3驅動是基于網絡協議、完全Java實現的,它分為3個層次,同時向你展示了JDBC是如何通過中間層的網絡協議進行通信的。中間層服務講請求傳輸(直接或間接的)給特定的數據庫本地連接接口,然后通過這個接口將請求傳輸到數據庫服務器。中間層用Java實現,數據庫訪問的實現通過JDBC-ODBC橋。
  
  JDBC Type3 的結構
  
  對于applet,客戶層驅動文件位于中間層服務器,并且可以直接下載。在JDBC驅動種RMI提供網絡協議服務,負責驅動的客戶端和服務端的通信。JDBC-ODBC橋使得JDBC請求可以傳輸到數據庫服務器。
  
  驅動的客戶層為客戶端程序提供了標準的JDBC接口,包括實現了java.sql.Driver接口的Driver類。同時還包含了JDBC的Connection、Statement、Result接口的實現。
  
  客戶端應用程序,比如applet,可以使用Type3驅動的客戶層類進行開發,因為它實現了標準的JDBC接口擁有標準的JDBC功能。客戶層類的Driver在內部會維護與中間層提供的遠程接口之間的通信。這些遠程接口提供了客戶端傳輸JDBC請求要用到的基本方法。應用程序會調用已經實現了的Driver中的JDBC方法,隨后這些調用會通過RMI發送到中間層。所有Driver類的客戶層通過中間層來治理內部的RMI通信。
  
  驅動的服務層是一個RMI服務器,它通過JDBC-ODBC橋來和數據庫進行通信。驅動的服務層包含4個遠程接口以及它們的實現,這些遠程接口分別為JDBC的Driver、Connection、Statement和Result提供了訪問接口。實現這些遠程接口的類會在內部維護JDBC-ODBC的橋驅動的Connection、Statement和Result對象。當客戶層類調用遠程接口的時候,遠程接口的實現使用內部的JDBC對象與數據庫通訊。
  
  現在你已經了解了Type3 JDBC驅動的接口,下面讓我們進一步的深入到客戶層和服務器層中。
  
  JDBC類驅動
  
  為了實現Type3 JDBC驅動,我們必須創建客戶層和中間層??蛻魧宇愇挥赾om.jw.client包中,中間層位于com.jw.server包中,讓我們先來看看客戶層。
  
  客戶層類
  
  客戶層包com.jw.client中包含下面幾個類:
  
  com.jw.client.JWDriver類:JDBC驅動(Driver)的實現類。
  
  com.jw.client.JWConnection類:JDBC連接(Connection)的實現類。
  
  com.jw.client.JWStatement類:JDBC表達式(Statement)的實現類。
  
  com.jw.client.JWRseultSet類:JDBC結果集(ResultSet)的實現。
  
  如所示,它描述了客戶層和中間層Driver和Connection類之間的關系。
  
  Driver和Connection類
  
  讓我們仔細的看看JWDriver類的內部:
  
  JWDriver類
  
  com.jw.client.JWDriver類實現了java.sql.Driver接口,它提供了通過DriverManager類注冊自己并創建數據庫連接的方法。這個類實現了遠程Driver的封裝以便提供JDBC驅動接口。在應用程序中通過下面的方法調用可以加載JWDriver:
  
  Class.forName("com.jw.client.JWDriver");
  
  當它通過DriverManager類加載后,上面的代碼中forName方法會調用JWDriver類的static部分的代碼。下面顯示的代碼中的static部分:
  
  static{try{// Register the JWDriver with DriverManagerJWDriver driverInst = new JWDriver();DriverManager.registerDriver(driverInst);System.setSecurityManager(new RMISecurityManager());}...}
  
  JWDriver類同時還維護一個遠程驅動的引用,com.jw.server.IremoteDriver,它位于中間層服務器。遠程驅動的引用為JWDriver創建了數據庫的連接。所以當應用程序需要獲得一個數據庫連接的時候就調用DriverManager.getConnection()方法,這時DriverManager的JWDriver.connect()方法會通過遠程驅動的引用獲得一個數據庫連接。
  
  簡而言之,JWDriver.connect()方法完成如下超作:
  
      比較客戶端程序傳遞的URL假如是一個不匹配的URL就返回一個null。
  
      假如不存在遠程驅動引用就通過Naming.lookup()方法創建一個。JWDriver.connet()方法控制遠程驅動來創建數據庫連接。:
  
  if(remoteDriver == null){remoteDriver= RemoteDriver)Naming.lookup("rmi://"+serverName+":1099"+"/RemoteDriver");}
  
      創建、使用如上方法創建的數據庫連接,并將創建的數據庫連接返回給調用它的應用程序。RemoteDriver.getConnetion()方法是中間層JDBC驅動的遠程調用,從中間層獲得的遠程Connection作為一個應用保存在JWConnection類對象中。JWConnection類可以通過下面的方法獲得:
  
  {IRemoteConnection remoteConInstance =(IRemoteConnection)remoteDriver.getConnection();localConInstance = new JWConnection(remoteConInstance);...return (Connection)localConInstance;}
  
  下面我們一起來仔細的看看JWConnection類。
  
  JWConnection類
  
  Com.jw.client.JWConnection類實現了Connection接口,而且它還包含一個遠程服務器IremoteConnection接口的引用。
  
  客戶端程序中的JWDriver.connect方法可以得到JWConnection對象的引用并創建一個JWConnection對象。這樣客戶端就可以通過JWConnection對象任意的調用JDBC Connection接口的方法了。JWConnection在內部調用遠程服務器的Connection。比如當客戶端調用conn.createStatement()方法時(conn是一個JWConnection的引用),其內部會調用一個RemoteConnection.createConnection()方法,并返回一個遠程的Statement引用;JWConnectoin的createStatement方法會創建一個JWStatement對象;最后一個JWStatement對象會返回個客戶端,這個對象中包含的Statement的引用:
  
  public Statement createStatement() throwsSQLException{try{IRemoteStatement remStmt =(IRemoteStatement) remoteConnection.createStatement();JWStatement localStmtInstance = new JWStatement(remStmt);return (Statement)localStmtInstance;}}
  
  描述了客戶層和中間層中Connection和Statemennt類之間的關系。
  
  Connection和Statement之間的關系
  
  下面再讓我們來看看JWStatement類
  
  JWStatement類
  
  com.jw.clent.JWS

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黑人又粗大| 亚洲桃花岛网站| 久久精品国产视频| 国产97免费视| 亚洲欧美制服中文字幕| 精品国产1区2区| 亚洲大尺度美女在线| 久久久免费精品视频| 亚洲精品一区在线观看香蕉| 色综合久久天天综线观看| 日韩经典一区二区三区| 日韩欧美国产骚| 亚洲午夜国产成人av电影男同| 国产成人97精品免费看片| 久久精品成人一区二区三区| 夜夜嗨av色综合久久久综合网| 91国产视频在线播放| 日韩欧美视频一区二区三区| 青青精品视频播放| 久久手机免费视频| 亚洲免费视频在线观看| 亚洲天堂免费观看| 久久免费视频这里只有精品| 欧美麻豆久久久久久中文| 欧美午夜精品久久久久久人妖| 中文字幕亚洲一区| 亚洲第一视频网站| 成人美女免费网站视频| 亚洲色图欧美制服丝袜另类第一页| 北条麻妃一区二区三区中文字幕| 欧美中文字幕在线播放| 欧美一级视频免费在线观看| 成人av在线亚洲| 色综合视频网站| 亚洲国产日韩欧美在线动漫| 欧美激情在线播放| 国产精品久久久久久av福利| 国产在线视频欧美| 亚洲国产精品va在线观看黑人| 欧美在线视频一二三| 欧美日韩视频免费播放| 一本色道久久88精品综合| 久久亚洲精品成人| 久久网福利资源网站| 欧美日韩一二三四五区| 成人激情视频网| 亚洲女在线观看| 欧美激情久久久| 国产成人精品久久二区二区| 欧美亚洲视频一区二区| 久久精品国产精品| 欧美激情手机在线视频| 久久久久久久电影一区| 国产欧美日韩综合精品| 日韩麻豆第一页| 欧美特黄级在线| 日韩av电影国产| 98视频在线噜噜噜国产| 亲爱的老师9免费观看全集电视剧| 国产在线视频91| 日韩毛片在线看| 91亚洲人电影| 亚洲字幕在线观看| 亚洲男人天天操| 日韩不卡在线观看| 精品国产自在精品国产浪潮| 色小说视频一区| 国产色综合天天综合网| 欧美日韩高清区| 亚洲视频日韩精品| 欧美激情一区二区三区高清视频| 久久精品电影网| 一本色道久久88综合日韩精品| 亚洲色图色老头| 一本色道久久综合狠狠躁篇怎么玩| 亚洲午夜激情免费视频| 国产精品老女人视频| 久久久久久久电影一区| 成人a免费视频| 欧美成人精品不卡视频在线观看| 成人精品久久久| 久久久噜噜噜久噜久久| 亚洲国产精品va在线看黑人| 成人欧美一区二区三区黑人孕妇| 亚洲美女动态图120秒| 欧美精品www| 深夜福利国产精品| 欧美整片在线观看| 中文字幕日韩综合av| 日韩中文视频免费在线观看| 欧美大片在线看免费观看| 国产亚洲精品久久久久久牛牛| 欧美国产亚洲精品久久久8v| 久久久久久久一区二区三区| 亚洲国产日韩精品在线| 欧美极品在线视频| 亚洲四色影视在线观看| 97精品视频在线| 亚洲视频视频在线| 欧美视频免费在线观看| 国产成人97精品免费看片| 久久影视电视剧凤归四时歌| 欧美成人sm免费视频| 国模视频一区二区| 成人免费自拍视频| 这里只有精品视频| 欧美大尺度激情区在线播放| 国产精品99久久99久久久二8| 久久午夜a级毛片| 91精品免费看| 中文字幕在线视频日韩| 91中文字幕在线观看| 欧美激情第99页| 亚洲欧洲在线播放| 欧美巨乳美女视频| 久久精品国产精品亚洲| 国产精品国产三级国产aⅴ9色| 日韩高清电影免费观看完整| 中文字幕在线看视频国产欧美| 欧美在线视频免费| 国产精品成人一区| 国产成人午夜视频网址| 成人有码视频在线播放| 国产成人亚洲综合青青| 午夜欧美不卡精品aaaaa| 亚洲欧美三级伦理| xxav国产精品美女主播| 久久色精品视频| 亚洲最大在线视频| 综合国产在线视频| 国模私拍一区二区三区| 日韩欧美高清在线视频| 日本在线精品视频| 国产婷婷成人久久av免费高清| 日韩大片免费观看视频播放| 最近中文字幕2019免费| 精品亚洲永久免费精品| 国产裸体写真av一区二区| 国产亚洲一级高清| 国产亚洲欧洲黄色| 91黑丝高跟在线| 2018国产精品视频| 91极品视频在线| 欧美在线免费视频| 亚洲丁香久久久| 欧美高清在线视频观看不卡| 97av视频在线| 亚洲专区在线视频| 欧美一区深夜视频| 色噜噜狠狠狠综合曰曰曰| 亚洲丁香久久久| 国产91网红主播在线观看| 久久久久久尹人网香蕉| 欧美日韩在线免费| 91久久久久久久久久久| 国产精品福利无圣光在线一区| 久久久这里只有精品视频| 欧美伦理91i| 欧美区二区三区| 自拍偷拍亚洲一区| 久久成人这里只有精品| 亚洲精品视频免费在线观看| 久久久久久18| 国产在线999|