jdbc與hibernate的優缺點比較

時間 2022-04-12 17:58:11

1樓:決勝千

關於這個問題網上討論的很多,多查查其實也大概清楚了。

我說點自己的體會吧

其實剛開始用hibernate時,也沒覺得有多方便,感覺配置好複雜,什麼狀態、關聯、快取搞不清,而且複雜的查詢很難實現。開發起來縮手縮腳,如履薄冰,覺得沒有jdbc來的靈活,隨心所欲。

hibernate用多了之後再使用jdbc,感覺jdbc好煩,老是要對應你資料庫中的字段和程式中的實體。比如查詢操作,hibernate中一句load(class,id) 就好了,而jdbc一直寫rs.get(「你資料庫欄位名") ,你要一直對照資料庫。

hibernate的開發效率確實要高很多。

還有一點感觸,jdbc和資料庫耦合太高,要換資料庫的話,代價大。

不知道你具體要了解些什麼,希望對你有所幫助。

2樓:匿名使用者

hibernate封裝了輕量級的jdbc元件,hql語句是物件導向的比較簡單,

jdbc操縱的是變數,是瞬時的和資料庫的值不一致,hibernate操縱的是物件,物件的值和資料庫的值保持一致

hibernate 在表多的時候,表與表之間的關係比較複雜,不易操作

3樓:當我成回憶

jdbc靈活,但是不自動化,hibernate全自動化,你只要配置,hibernate自動生成sql語句!

4樓:匿名使用者

簡單來說,hibernate更好體現了物件導向的特點

5樓:匿名使用者

很實在,你看了你寫得jdbc**後,再看看你的hibernate** 然後試著去想想 我用誰比較給力呢 。答案就出來了

hibernate與jdbc哪個好?各自的優點和缺點

6樓:嗡嗡大佬

hibernate與jdbc相比較的主要優點是:

一、物件導向:hibernate可以讓開發人員以物件導向的思想來運算元據庫。jdbc只能通過sql語句將元資料傳送給資料庫,進行資料操作。

而hibernate可以在底層對元資料和物件進行轉化,使得開發者只用物件導向的方式來訪問資料即可。

二、移植性:hibernate使用xml或jpa的配置以及資料庫方言等等的機制,使得hibernate具有更好的移植性,對於不同的資料庫,開發者只需要使用相同的資料操作即可,無需關心資料庫之間的差異。而直接使用jdbc就不得不考慮資料庫差異的問題。

三、封裝性:hibernate提供了大量的封裝(這也是它最大的缺點),很多資料操作以及關聯關係等都被封裝的很好,開發者不需寫大量的sql語句,這就極大的提高了開發者的開發效率。

四、快取機制:hibernate提供了快取機制(session快取,二級快取,查詢快取),對於那些改動不大且經常使用的資料,可以將它們放到快取中,不必在每次使用時都去查詢資料庫,快取機制對提公升效能大有裨益。

缺點:一、對hibernate而言,它對jdbc封裝過於厲害,所以就失去了對sql的控制(當然hibernate也可以使用native sql既使用createsqlquery等方法來呼叫與資料庫相關的sql,但這樣一來也就影響了hibernate的可移植性),使得hibernate的在很多地方不夠靈活,難於優化,尤其對於一些複雜的關聯查詢時,hibernate提供的功能遠不及直接使用jdbc方便效能更高。

二、hibernate沒有提供專門的批處理機制,如果要批量更新或插入資料時,還需要顯示的flush,clear之類的操作,效能不如jdbc。

三、相對於jdbc,hibernate更消耗記憶體,因為它每次的資料庫操作都要做資料和物件的轉換/封裝,查詢出一條資料就要建立乙個或多個物件,這樣也太消耗記憶體了。

一般專案都會用到hibernate,不過初學者對於jdbc也要有一些了解這樣方便了解hibernate的機制,實際專案中hibernate用的比較多,有時也會用到jdbc看具體情況。

7樓:匿名使用者

其實他們都是基於介面來設計的,屬單例,只不過hibernate比較傾向於我們所用的物件導向程式設計的思想

簡述hibernate 和 jdbc 的區別,優缺點

簡述 hibernate 和 jdbc 的優缺點? 如何書寫乙個 one to many 配置檔案.

8樓:

hibernate就是封裝了jdbc,他可以寫一條hql語句,可以再不同資料庫中使用,不用修改hql語句,但是關聯查詢效率低。

jdbc是基礎的鏈結資料庫的框架,效率高,但是mysql、oracle、sql service等不同的資料庫要寫不同的sql語句。

one to many比如class和student吧就是乙個班級對應多個學生

在class類中追加集合屬性 setstudents;

在class的配置檔案中追加(class.hbm.xml)

將studnet中的classid屬性去掉換成 class class;

在student的配置檔案中(student.hbm.xml)

不明白可以再問我,有可能寫的有點亂,純手寫,見諒

使用hibernate的優缺點

9樓:匿名使用者

………………………………優點是物件導向,使程式設計師不必在關注資料庫語句。缺點是,很難學,而且要做對映,自然就浪費掉一些資源嗯,什麼事單雙向關係?你說得是層級關聯還是一對多 多對多?

快取機制……分為兩種,一種是一級快取,就是hibernate自帶的session,第二就是二級快取,是外接的。第一種快取只是簡單的記錄了查詢結果list,如果沒有特殊的設定,相同的查詢,會從session中取得,而不是連線資料庫。二級快取無非就是可以儲存大量的資料,儲存在硬碟上,以便快速讀取

10樓:趣事情

1.hibernate的優缺點:

優點:1、程式更加物件導向;

2、提高了生產率;

3、方便移植(修改配置檔案);

4、無侵入性。

缺點:1、效率比jdbc略差;

2、不適合批量操作。

2.hibernate有四種查詢方案:

1、get,load方法,根據id查詢物件2、hql--hibernate query language(查詢物件:query)

3、criteria--標準查詢語言(查詢物件:criteria,查詢條件:criterion)

4、通過sql來查(查詢物件:sqlquery)

11樓:匿名使用者

1、不需要編寫的sql語句(不需要編輯jdbc),只需要操作相應的物件就可以了,就可以能夠儲存、更新、刪除、載入物件,可以提高生產效;

2、因為使用hibernate只需要操作物件就可以了,所以我們的開發更物件化了;

3、使用hibernate,移植性好(只要使用hibernate標準開發,更換資料庫時,只需要配置相應的配置檔案就可以了,不需要做其它任務的操作);

4、hibernate實現了透明持久化:當儲存乙個物件時,這個物件不需要繼承hibernate中的任何類、實現任何介面,只是個純粹的單純物件—稱為pojo物件(最純粹的物件—這個物件沒有繼承第三方框架的任何類和實現它的任何介面)

5、hibernate是乙個沒有侵入性的框架,沒有侵入性的框架我們一般稱為輕量級框架

6、hibernate**測試方便。 只要你hibernate學到家了,用起來絕對比寫sql語句爽......這是俺們導師說的!哈哈~

12樓:匿名使用者

hibernate的優點:簡化了持久層的開發,可以運用物件導向的語言運算元據庫,hibernate具有平台無關性開發的產品更具移植性。

不好的地方:生成過多的sql語句,學習曲線過於陡峭。

hibernate和jdbc有什麼區別?(面試題)

13樓:疏朗新思考

hibernate是orm框架,是對底層連線資料庫和查詢資料庫進行封裝。是jdbc一種實現,比如jdbc是介面,那麼hibernate就是乙個封裝的物件類。

而hibernate是乙個純正的物件導向框架而jdbc相當於乙個面向過程的語句。所以在專案中應用直接使用jdbc不夠物件導向,而hibernate則是。

14樓:

hibernate:將資料封裝到物件中,通過操作物件完成資料庫操作jdbc:直接運算元據

hibernate底層實現為jdbc 包裝了很多的東西 稱之為框架

如果是面試,不需要回答太詳細、知道本質的區別就行啦!

Hibernate是如何實現MVC的

spring mvc是model,view,controller。具體的model可以是你說的hibernate生成的持久化類 do view是jsp頁面,controller是servlet。因此,hibernate只是作為model部分的工具 mvc是一種設計思想,即便是不使用框架,我們也可以把...

Spring和Hibernate的註解整合hibernate3和hibernate

hibernate4.0版本和3.0版本的區別 1.資料庫方言設定 org.hibernate.dialect.mysql5dialect 現在,ssh框架中註解的使用已經非常普遍了,在此我介紹一下spring整合hibernate註解時的配置 hibernate和spring的註解方式請網上搜尋。...

hibernate裡的inverse和cascade是什麼區別

inverse的作用 在hibernate中是通過inverse的設定來決定是由誰來維護表和表之間的關係的。inverse的值有兩種,true 和 false inverse false 是預設的值,如果設定為true 則表示物件的狀態變化不會同步到資料庫 設定成false則相反。cascade則描...

關於hibernate的問題。。

這個問題是hibernate 一級快取導致的問題。證明,你在呼叫 還沒有提交事務,關閉hibernate session之前呼叫了。list list from member where num num member member member 這次查詢,但是這次查詢和。使用了同乙個session,...

JDBC連線ORACLE資料庫的問題

drivermanager.getconnection jdbc oracle thin 169.254.178.2 1521 sxt lfy 1989121 這個sxt位置上要填的資料庫例項名,你應該填ora9但願能幫到神隕更多盡在365testing,測評網,51cto j a中 jdbc 連線...