淺談使用Hibernate場合
Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹使用Hibernate場合,包括介紹Hibernate是一個更為傳統(tǒng)的ORM等方面。
使用Hibernate場合
既然Hibernate看起來如此靈活好用,為什么還要使用其他的工具呢?下面有一些場景,可以幫助您做出判斷(或許通過提供一些比較和上下文,可以有助于鑒別非常適用Hibernate的場合)。
如果應(yīng)用對于數(shù)據(jù)存儲的需要十分簡單——例如,您只想管理一組用戶優(yōu)先選擇——您根本不需要數(shù)據(jù)庫,更不用說一個優(yōu)秀的對象-關(guān)系映射系統(tǒng)了(即使它也如Hibernate這般易于使用)!從Java 1.4開始,有一個標(biāo)準(zhǔn)的Java Preferences API可以很好地發(fā)揮這個作用。(在ONJava文章中可以找到有關(guān)Preferences API的更多信息。)
對于熟悉使用關(guān)系數(shù)據(jù)庫和了解如何執(zhí)行完美的SQL查詢與企業(yè)數(shù)據(jù)庫交互的人來說,Hibernate似乎有些礙手礙腳,這就像帶有動力和自動排擋的快艇車會使注重性能的賽車駕駛員不耐煩一樣。如果您屬于這種人,如果您所在的項(xiàng)目團(tuán)隊(duì)擁有一個強(qiáng)大的DBA,或者有一些存儲過程要處理,您可能想研究一下iBATIS。Hibernate的創(chuàng)建者本身就把iBATIS當(dāng)作是另一種有趣的選擇。我對它很有興趣,因?yàn)槲覀冊鵀橐粋€電子商務(wù)站點(diǎn)開發(fā)了一個類似的系統(tǒng)(其功能更為強(qiáng)大),而且從那時(shí)到現(xiàn)在,我們已經(jīng)在其他環(huán)境中使用過它,盡管在發(fā)現(xiàn)Hibernate之后,在新項(xiàng)目中我們通常更喜歡使用Hibernate。您可以認(rèn)為,以SQL為中心的解決方案(比如iBATIS)是“反向的”對象/關(guān)系映射工具,而Hibernate是一個更為傳統(tǒng)的ORM。
當(dāng)然,還有其他的外部原因會導(dǎo)致采用另外的方法。比如,在一個企業(yè)環(huán)境中,必須使用成熟的EJB架構(gòu)(或者其他的一些非普通對象映射系統(tǒng))??梢詾樘峁┳约旱臄?shù)據(jù)存儲工具的平臺量身定做代碼,比如Mac OS X's Core Data。使用的可能是像XML DTD這樣的存儲規(guī)范,而它根本不涉及關(guān)系數(shù)據(jù)庫。
但是,如果您使用的是富對象模型,而且想要靈活、輕松且高效地保存它(無論您是否正要開始或已經(jīng)決定使用關(guān)系數(shù)據(jù)庫,只要這是一個選擇——而且存在可用的優(yōu)秀免費(fèi)數(shù)據(jù)庫,比如MySQL,或可嵌入Java的HSQLDB,它就應(yīng)該始終是一個選擇),那么Hibernate很可能就是您理想的選擇。您可能會驚訝于節(jié)省的時(shí)間之多,以及您將會多么地喜歡使用它。 以上介紹使用Hibernate場合。
【編輯推薦】