Java資料庫的存取技術

來源:互聯網
上載者:User

標籤:

IT技術日新月異,新技術的出現令人目不暇接,似乎每一天都在產生著新名詞。不過歸根結底IT所要實現的價值不外乎資料收集,然後再以客戶希望的形式展示給客戶而已。因此資料存取技術也就成了一個永恒的話題。而在Java這個開放的世界裡,資料庫存取技術是五花八門,種類繁多。我們也來侃侃Java世界裡主流的資料庫存取技術。

 

首先列出英雄榜

 

1.    JDBC直接存取資料庫

2.    EJB  entity bean.

3.    JDO技術。

4.    第三方O/R工具,如目前大紅大紫的Hibernate, 其它如Castor, Toplink.

 

   先說說這個曆史最為悠久的JDBC吧。從Java誕生的那天起,這位仁兄就開始登上曆史舞台了。Java能有今天這麼風光,JDBC可以說是功不可末。一路走來,如今已是JDBC3.0了。在沒有JDBC的時候,訪問資料庫那是八仙過海,各顯神通,各家資料庫廠商都有自己的一套API, 苦就苦了開發人員了。換了個資料庫,那個程式要改是面目全非。JDBC規範的出台,向世界宣告從此有了訪問關聯式資料庫的標準通用介面了。JDBC標準獲得了幾乎所有資料庫廠商的支援,好像還真難找到這麼一個資料庫,它是沒有JDBC 支援的。JDBC規範一經發布,獲得了空前成功,很快成為java訪問資料庫的標準。JDBC的成功在於它的規範統一標準的介面,只需要掌握標準的SQL語言就可以訪問各種不同的資料庫了。這種資料庫間的可移植性和Java一直高喊的口號Compile  Once, Run everywhere遙相呼應。JDBC今天還是java訪問資料庫的基石,CMP, JDO, Hibernate 說到底只是更好的封裝了JDBC, 提供了更為上層的更為強大的介面而已。然後說說JDBC直接存取資料庫的方式來實現java 持久性。

這種方式相對於CMP來說比較簡單直接,特別是對於小型應用十分方便。比如,我要寫一個簡單的留言版程式,就沒有必要session bean ,entity bean ,又是home介面又是遠程介面,一層層調了吧。直接JDBC,寫SQL語句了事。和其它持久化技術相比,JDBC直接存取資料庫的方式需要程式員操心的事情多了一些,你得自己關心transaction, 自己關心串連池,你得寫大量的get set方法,把SQL select出來的值一個一個塞到你的java object中,或者把java object的值一個一個給取出來,用SQL insert 到資料庫,完全手動進行O/R mapping。為了克服這些缺點,CMP, JDO等等開始陸續登上曆史舞台。

DO的簡單易用是最為人們所稱道的,不需要你寫大量無用的介面,不需要你繼承什麼特殊的類,唯一所要做的就是對你的class檔案做一下enhance。用了JDO,可以說我們的java程式這下真正OO了,我們無需再理會資料庫裡面有啥表格了,存取都是以java object為對象了,所有資料庫表格都是自動產生的。這一點可以說也是一個革命了。在此之前,項目設計階段,Database Schema設計可以說是個重頭戲。而現在用JDO開發,完全不需要資料庫設計了。那你的Database Schema呢? 就是你的Class 啊,JDO會根據你的Class自動產生相應的資料庫表格。 一個字 , 爽!從資料庫可移植性來看,JDO也是優勢明顯,就我使用過的Kodo 和 Genie來看,幾個簡單應用程式換資料庫時候除了換一個JDBC driver, 換一下資料庫URL,無需對程式做任何改動。 這一點對EJB 來說又是處於劣勢。從家庭出身來看,JDO也是出生名門,從一開始就處於JCP管理之下。從企業級支援來看,它可以很好的和Session bean協同工作,對於企業級開發, Session bean + JDO的方式是Session bean + entity方式的一個強有力競爭者。雖然有這麼多優點,不過它的發展之路也非一帆風順,這不,今年五月份JDO2.0的投票,IBM, Oracle, Bea 三大巨頭同時投了反對票。不過稍微一想,就可以理解,這並不是JDO本身技術有什麼重大缺陷,而是JDO動到這些巨頭們的乳酪了。Bea, IBM做著業界最為著名應用伺服器,weblogic和WebSphere,在EJB上面是投下了血本了,他們不能眼睜睜看著JDO來蠶食EJB市場。而Oracle, 還在賣著它自己的O/R工具Toplink, 看著JDO日漸強大,他能不著急麼。不過呢,公司再牛,他也擋不住曆史前進的車輪吧,最終JDO2.0的投票還是以絕對的票數(12:3)通過了。

 

  還有其它散落江湖的Java持久化技術,如Hibernate, Castor, Toplink, 他們雖然沒有皇家血統,不過實力也是不容小視。就拿Hibernate來說,是javaworld評選出來的2003年度最佳java資料存取工具,目前可以說是大紅大紫。而Castor和Toplink也算是曆史悠久了,在JDO沒有出世之前,它們就在江湖上混著了。目前也佔據著一定的市場。這些第三方的工具從功能上來說很類似於JDO, 只是各自的API互不相同。這也是後來JDO規範的呼聲越來越高的一個原因吧。這些第三方O/R mapping工具能在江湖上立足,也確實都有各自過人之處。如Hibernate金字招牌就是Open Source,支援幾乎世面上所能看到得絕大部分資料庫,並且文檔也非常齊全。Toplink麼,可謂曆史悠久,又榜著Oracle這棵大樹。目前來看,這些工具也佔據著java資料庫存取的不小市場。個人覺得,隨著JDO規範的不段完善,JDO產品的普及,這一部分人員可能會在以後漸漸退出曆史舞台。不過從Hibernate目前如日中天的氣勢來看,好像說這句話還為時過早。

 

    關於這些技術優劣之爭從它們剛剛出生那天起從來就沒有停止過,而各家各派也從來沒有能夠說服過對方。對於我們應用開發人員而言,撇開應用純粹來爭論技術優劣並沒有多大意義。還是俗話說的好,沒有最好的,只有最合適的。我們能夠在做開發的時候能夠選擇一個最合適於自己應用的技術,那就足夠了。總的來說,JDBC面向RDBMS,比較適合關聯式資料庫模式驅動的應用,例如統計表格式資料,產生報表之類的應用。EJB 技術以J2EE應用伺服器為中心,如果你的應用確實需要靈活的可聲明的事務邊界,需要支援大容量的訪問和不間斷的服務,需要應用伺服器的叢集,那麼選EJB吧。JDO則物件導向,對於以域對象為中心的應用,包含圖,樹模型的應用,JDO是首選。

Java資料庫的存取技術

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.