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

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

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

    大漠駝鈴

    置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
    Java,Php,Shell,Python,服務(wù)器運維,大數(shù)據(jù),SEO, 網(wǎng)站開發(fā)、運維,云服務(wù)技術(shù)支持,IM服務(wù)供應(yīng)商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
    隨筆 - 238, 文章 - 3, 評論 - 117, 引用 - 0
    數(shù)據(jù)加載中……

    jdbc 中四種type解釋 轉(zhuǎn)載

    There are many possible implementations of JDBC drivers. These implementations
    are categorized as follows:
    n Type 1 — drivers that implement the JDBC API as a mapping to another data
    access API, such as ODBC. Drivers of this type are generally dependent on a
    native library, which limits their portability. The JDBC-ODBC Bridge driver is an
    example of a Type 1 driver.
    n Type 2 — drivers that are written partly in the Java programming language and
    partly in native code. These drivers use a native client library specific to the data
    source to which they connect. Again, because of the native code, their portability
    is limited.
    n Type 3 — drivers that use a pure Java client and communicate with a middleware
    server using a database-independent protocol. The middleware server then
    communicates the client’s requests to the data source.
    n Type 4 — drivers that are pure Java and implement the network protocol for a
    specific data source. The client connects directly to the data source.


    以上來自JDBC3.0的規(guī)范

    Type1 用JDBC-ODBC bridge 來建立數(shù)據(jù)庫的connection,這種效率很一般,

               

     public static Connection getConnectionbyBridge() {
      Connection conn = null;
      try {
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       conn = DriverManager.getConnection("jdbc:odbc:abc", "cms", "cms");
       System.out.println(conn.getTransactionIsolation());

      } catch (ClassNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }

      return conn;
     }

    Typ2 是效率比較高的,部分用了jdbc的驅(qū)動,部分是要依賴數(shù)據(jù)庫的客戶端,比如ORACLE 10g OCI

     public static Connection getConnectionOCI() {
      Connection conn = null;
      try {
       Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection(
         "jdbc:oracle:oci:@127.0.0.1:1521:orcl", "cms", "cms");
       
       System.out.println(conn.getAutoCommit());

      } catch (ClassNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }

      return conn;
     }



    Type3:網(wǎng)絡(luò)協(xié)議驅(qū)動 這種驅(qū)動實際上是根據(jù)我們熟悉的三層結(jié)構(gòu)建立的. jdbc先把對數(shù)局庫的訪問請求傳遞給網(wǎng) 絡(luò)上的中間件服務(wù)器. 中間件服務(wù)器再把請求翻譯為符合數(shù)據(jù)庫規(guī)范的調(diào)用,再把這種調(diào)用 傳給數(shù)據(jù)庫服務(wù)器.如果中間件服務(wù)器也是用java開法的,那么在在中間層也可以使用1,2型 jdbc驅(qū)動程序作為訪問數(shù)據(jù)庫的方法. 網(wǎng)絡(luò)協(xié)議驅(qū)動---------中間件服務(wù)器------------數(shù)據(jù)庫Server

    Type4 本地協(xié)議驅(qū)動
    這種驅(qū)動直接把jdbc調(diào)用轉(zhuǎn)換為符合相關(guān)數(shù)據(jù)庫系統(tǒng)規(guī)范的請求.由于4型驅(qū)動寫的應(yīng)用可 以直接和數(shù)據(jù)庫服務(wù)器通訊.這種類型的驅(qū)動完全由java實現(xiàn),因此實現(xiàn)了平臺獨立性. 本地協(xié)議驅(qū)動---------數(shù)據(jù)庫Server

     public static Connection getConnection() {
      Connection conn = null;
      try {
       Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection(
         "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "cms", "cms");
       
       System.out.println(conn.getAutoCommit());

      } catch (ClassNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }

      return conn;
     }
     

    對四種類型的jdbc驅(qū)動做了一個說明.那么它們適合那種類型的應(yīng)用開發(fā)呢?

    Jdbc-odbc橋由于它的執(zhí)行效率不高,更適合做為開發(fā)應(yīng)用時的一種過度方案,或著對于初學(xué) 者了解jdbc編程也較適用. 對于那些需要大數(shù)據(jù)量操作的應(yīng)用程序則應(yīng)該考慮2,3,4型驅(qū)動.在intranet方面的應(yīng)用可以 考慮2型驅(qū)動,而且目前開發(fā) 的趨勢是使用純java.所以3,4型驅(qū)動也可以作為考慮對象. 至于基于internet方面的應(yīng)用就只有考慮3,4型驅(qū)動了. 因為3型驅(qū)動可以把多種數(shù)據(jù)庫驅(qū) 動都配置在中間層服務(wù)器.所以3型驅(qū)動最適合那種需要同時連接多個不同種類的數(shù)據(jù)庫, 并且對并發(fā)連接要求高的應(yīng)用. 4型驅(qū)動則適合那些連接單一數(shù)據(jù)庫的工作組應(yīng)用。
    但是Typ2 和type1我認為很少會用到,type1 可移植,效率都不行,type2效率雖然高,但是可移植太差,只有3.4是最常用的,當(dāng)然大規(guī)模的分布式應(yīng)用3是很好的選擇,一般的企業(yè)應(yīng)用,我認為用4就很夠了,并且效率也高。

    posted on 2009-03-06 09:41 草原上的駱駝 閱讀(461) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91高清免费国产自产拍2021| 国内精品99亚洲免费高清| 91精品啪在线观看国产线免费| 亚洲一级毛片免观看| 大地资源在线资源免费观看| 久久精品国产精品亚洲人人| jzzjzz免费观看大片免费| 亚洲av日韩av欧v在线天堂| 99热这里有免费国产精品| 久久精品亚洲一区二区| 97在线视频免费公开视频| 中文字幕亚洲乱码熟女一区二区 | 亚洲乱码日产精品BD在线观看| 24小时日本电影免费看| 亚洲国语在线视频手机在线| 国产1024精品视频专区免费| 亚洲AV无码国产精品色| 免费看无码自慰一区二区| 精品亚洲国产成人av| 亚洲无码视频在线| 日本黄色动图免费在线观看| 亚洲综合小说久久另类区| 中字幕视频在线永久在线观看免费 | 久久免费精品一区二区| 亚洲综合男人的天堂色婷婷| 成人免费无码视频在线网站| 亚洲精品夜夜夜妓女网| 99在线免费观看视频| 亚洲 欧洲 自拍 另类 校园| 国产又黄又爽又刺激的免费网址 | 黄色a三级三级三级免费看| 激情97综合亚洲色婷婷五| 久久国产免费一区| 亚洲午夜无码久久| 亚洲综合最新无码专区| 91精品啪在线观看国产线免费| 亚洲成a人无码亚洲成av无码| 国产亚洲精aa成人网站| 国产在线jyzzjyzz免费麻豆| 黄页免费视频播放在线播放| 久久亚洲伊人中字综合精品|