【Java學習】JDBC可以再深一點理解

JDBC驅動程序

JDBC驅動程序是JDBC API中實現定義的接口。
JDBC是java語言中的與數據庫連接的接口。
也就是說JDBC是Java API,使得Java可以與數據庫進行連接,而JDBC驅動程序是JDBC API,驅動JDBC進一步與數據庫進行交互。

例如:使用JDBC驅動程序,可以發送SQL或者數據庫命令,然后就可以打開數據庫連接并與數據庫進行交互。

JDBC驅動的類型

Sun公司講實現類型分為四種,1,2,3,和4類型。

類型1: JDBC-ODBC橋驅動程序

【知識點】ODBC

什么是ODBC?

它是Open Database Connection,中文解釋為開放數據連接。百度百科上面說它為解決異構數據庫間的數據共享而產生的,這很難理解。
首先我們現在有很多中數據庫系統,如Oracle的Mysql,Sql Server等等,同時不同模型的數據庫還有一大堆,拋去關系型數據庫還有層次型、網絡型、面向對象型...還有他們運行的操作系統也有不同,有的運行在linux上,有的呢又運行在windows上,當然也不一定安裝在計算機中,可以安裝在各種設備中,如:大型機、小型機、嵌入式系統中。那么這些不同的數據庫系統的集合就可以稱為異構數據庫!!那么有沒有互聯的需求嗎?答案是一定的,他們需要共享數據!

當今世界,人們對數據的需求越來越廣泛。一個部門里我們可以統一標準,必須在PC上使用Mysql!但是不同部門與不同部門之間同樣需要數據共享。所以數據庫互聯成為了一個很頭疼的問題。

ODBC就是為了解決這一問題的。在操作系統中安裝ODBC,應用程序可以用ODBC驅動來完成所有的數據庫操作。沒錯,所有的!

大概了解這么多也就足夠了。

回到類型一的驅動程序,JDBC橋接器用于訪問安裝在每臺客戶機上的ODBC驅動程序。然后通過ODBC可以進行數據庫的交互。

clipboard.png
但現在不推薦使用這種類型的驅動程序。

JDK1.2附帶的JDBC-ODBC橋接就是這種驅動程序。

類型2:JDBC本地API

在此類型中,JDBC API調用將轉換為本地C/C++ API調用。這些驅動程序通常由數據庫提供商提供。必須在每個客戶機上安裝供應商特定的驅動程序。

clipboard.png
這個和類型1使用方式是相同的,但是他需要特定于數據庫,但是有點也顯而易見,它能夠自行擴展,消除了ODBC開銷(看圖,不再需要ODBC提供服務了)。

Oracle調用接口(OCI)驅動程序就是此類型的示例。

類型3:JDBC-Net純Java

這一類型使用三層方法訪問數據庫。JDBC客戶端使用標準網絡套接字與中間件應用程序服務器進行通信。套接字信息隨后由中間件應用服務器轉換為DBMS所需的調用格式,并轉發到數據庫服務器。

由此可見此驅動很令或,不需要在哭胡段上面安裝代碼,一個驅動程序實際上可以提供多個數據庫的訪問。

clipboard.png

可以將在應用程序服務器視為JDBC“代理”,他會調用客戶端應用程序。

應用程序服務器會使用類型1,2或4與數據庫通信。

類型4 :100%純java

基于純Java的驅動程序同樣通過套接字連接與供應商的數據庫直接通信。但是不同的是,這通常由供應商自己提供。

優點是同樣靈活。還有這些驅動由于是數據庫供應商提供的,所以還可以動態的下載。

clipboard.png

MysqlConnector/J驅動程序是類型4驅動程序。

該使用哪個類型的驅動程序?

如果您正在訪問一種類型的數據庫,例如Oracle,Sybase或IBM DB2,則首選驅動程序類型為類型4。

如果Java應用程序同時訪問多種類型的數據庫,則類型3是首選驅動程序。

類型2驅動程序在數據庫不可用的類型3或類型4驅動程序的情況下使用。

類型1驅動程序不被視為部署級驅動程序,通常僅用于開發和測試目的。

參考資料

易百教程
百度百科

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452305.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452305.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452305.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

想成為優秀的技術人員你必須做到的幾件事情

找工作的這幾天,收獲頗多。思考得最多的問題可能就是對未來的一個規劃。無意中看到下面幾條經驗,發現和自己想的也差不多,就分享出來。我要求自己做到這些,同時也希望對您也有所幫助。 1、保持學習 一個非常重要的觀點是&#x…

第 五 課 golang語言變量

1 變量三種聲明: (第一種的var和類型都是多余; 第二種最簡潔,但是第二種只能用在函數中,不能是全局變量的聲明) 第一種: var v_name v_type(注意順序)v_name value pack…

wordpress 評論ajax,WordPress教程 WordPress實現提交評論ajax翻頁效果教程

WordPress提交評論ajax翻頁的效果會很大的提高用戶體驗度,雖然我們一般的個人WordPress博客評論也不會有很多,但是用戶體驗至上嘛,所以WordPress主題站小編為大家分享WordPress實現提交評論ajax翻頁效果教程,希望能給大家能用得上…

Lombok的使用方法

文章目錄0.Lombok簡介1.在項目中添加Lombok的依賴2.在IDEA開發工具中添加Lombok插件0.Lombok簡介 Lombok是一個實用的java工具,使用它可以消除java代碼的臃腫,Lombok提供一系列的注解,使用這些注解可 以不用定義getter/setter、equals、構造…

【Python3網絡爬蟲開發實戰】4-解析庫的使用-3 使用pyquery

在上一節中,我們介紹了Beautiful Soup的用法,它是一個非常強大的網頁解析庫,你是否覺得它的一些方法用起來有點不適應?有沒有覺得它的CSS選擇器的功能沒有那么強大?如果你對Web有所涉及,如果你比較喜歡用CS…

世上最偉大的十個公式,質能方程排名第五

英國科學期刊《物理世界》曾讓讀者投票評選了“最偉大的公式”,最終榜上有名的十個公式既有無人不知的112,又有著名的Emc2;既有簡單的-圓周公式,又有復雜的歐拉公式…… 從什么時候起我們開始厭惡數學?這些東西原本…

爬蟲二(urllib模塊)

1、在python2和python3中的差異 在python2中,urllib和urllib2各有各自的功能,雖然urllib2是urllib的升級版,但是urllib2還是不能完全替代urllib,但是在python3中,全部封裝成一個類,即urllib python2中urlli…

逆向工程

軟件的逆向工程是分析程序以便在比源代碼更高的抽象層次上創建出程序的某種表示的過程,也就是說,逆向工程是一個恢復設計結果的過程,逆向工程工具從現存的程序代碼中抽取有關數據、體系結構和處理過程的設計信息。 簡單的說根據已有的東西和…

protocol buffer使用小例

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 、使用EditPlus定義好一份proto文件(用EditPlus是為了不出現亂碼),如下 : package mypac…

2000服務器文件共享,Win2000 Server實現對共享文件的監控

病毒的出現,使我們在共享文件時變得異常小心。那么,有沒有辦法監控共享文件的使用情況并加以管理呢?有,用Windows 2000 Server的文件共享監控功能就可以實現。Windows 2000 Server的共享管理功能在“計算機管理”中,它…

學成在線--1.CMS接口開發

文章目錄0.定義CMS1.CMS頁面管理2.需求分析3.模型類介紹4.定義請求及響應類型5.定義接口6.創建CMS工程結構7.Dao1)創建Dao,繼承MongoRepository2)編寫測試類分頁查詢測試添加刪除修改8.Service9.Controller10.接口開發規范0.定義CMS 1&#…

django 進階

django進階 django的分頁器 基礎語法: View Code簡單練習: View Code實例應用: View Code自定義分頁: View Codeform表單系統 原生form View CodeDjango表單系統中,所有的表單類都作為django.forms.Form的子類創建&…

BZOJ 2440: [中山市選2011]完全平方數

Time Limit: 10 Sec Memory Limit: 128 MB Submit: 5160 Solved: 2515 [Submit][Status][Discuss] Description 小 X 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的…

如何減小與“大牛”的差距

為什么同樣的時間有的人可以漂亮的完成工作,而有些人廢了很大的力氣也沒有完成? 前者我們常常稱之為“大牛”,后者我們常常叫他們“菜鳥”。當然“大牛”都是相對而言的,“大牛”也不可能方方面面都非常厲害,換句話說大…

軟件再工程

軟件再工程是指對既存對象系統進行調查,并將其重構為新形式代碼的開發過程。最大限度地重用既存系統的各種資源是再工程的最重要特點之一。從軟件重用方法學來說,如何開發可重用軟件和如何構造采用可重用軟件的系統體系結構是兩個最關鍵問題。不過對再工…

武俠乂怎么修改服務器,武俠乂怎么操作 按鍵功能詳細介紹

武俠乂將在7月27日開啟限量測試了,入手前的第一件事情當然要熟悉操作按鍵了,下面給大家帶來的是武俠乂按鍵介紹,一起來看看吧。武俠乂將在7月27日開啟限量測試了,玩家們馬上就能體會到武俠吃雞的快感,除了吃雞模式外還…

RMI使用小例

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1、定義一個接口(繼承Remote): 方法要拋RemoteException。 package rmi; import java.rmi.RemoteEx…

產品經理和項目經理有哪些區別?

1.產品經理和項目經理的差異 首先,產品經理和項目經理的職責定義不太一樣。 產品經理是 Product Manager ,主要是負責市場調研、用戶研究并根據用戶的需求,定義和設計產品,然后考慮產品的商業模式、運營推廣方式等。接下來去推動…

09-完整性約束

本節重點: not null 與 defaultuniqueprimaryauto_incrementforeign key一、介紹 約束條件與數據類型的寬度一樣,都是可選參數 作用:用于保證數據的完整性和一致性 主要分為: PRIMARY KEY (PK) #標識該字段為該表的主鍵&#x…

fread rb與r,wb,w的區別

在fread時,"rb"與"r"對某些字符作用,是不同的; 文本模式和二進制模式讀取不一樣的 文本:讀: 遇到回車-換行(0D 0A),就會轉換為換行符0A 寫:遇到換行符0A,就會轉換為回車-換…