有人能夠用通俗的話來解釋什麼是與Hibernate和JDBC相關的對象/關係映射(ORM)?什麼是與Hibernate和JDBC相關的對象/關係映射(ORM)?
圖表將是理解特別有幫助......
編輯:我發現這個通過谷歌對Hibernate的ORM,有人可以確認它是準確的ORM是如何使用的一個很好的代表。
源:http://software-carpentry.org/3_0/summary.html
有人能夠用通俗的話來解釋什麼是與Hibernate和JDBC相關的對象/關係映射(ORM)?什麼是與Hibernate和JDBC相關的對象/關係映射(ORM)?
圖表將是理解特別有幫助......
編輯:我發現這個通過谷歌對Hibernate的ORM,有人可以確認它是準確的ORM是如何使用的一個很好的代表。
源:http://software-carpentry.org/3_0/summary.html
ORM允許您使用Java對象關係數據庫的表示。它映射了兩個概念(面向對象和關係)。
Hibernate是一個ORM框架 - 您描述瞭如何在數據庫中表示對象,並且hibernate處理轉換。
JDBC是數據庫訪問的API,它以「關係的方式」工作 - 查詢表並獲取行和列。 Hibernate使用JDBC來獲取數據並稍後將其轉換爲對象。
jdbc ResultSet
有多個記錄,每個記錄都有一組列。在休眠期間,這變成List<SomeClass>
,其中SomeClass has a field for every column in the database table, and there is one instance of
SomeClass`每個數據庫記錄。
我正在閱讀Hibernate,並偶然發現此主題。做進一步的研究,我發現了這個可能幫助別人的很好的解釋:
Hibernate框架簡化了Java應用程序與數據庫交互的開發。 Hibernate是一個開源的輕量級ORM(對象關係映射)工具。
ORM工具簡化了數據創建,數據操作和數據訪問。它是一種將對象映射到數據庫中存儲的數據的編程技術。休眠的
優點:
1)開源和輕量級: Hibernate框架是基於LGPL協議和輕質開源。
2)快速性能: hibernate框架的性能很快,因爲hibernate框架內部使用緩存。 Hibernate框架第一級緩存和第二級緩存中有兩種類型的緩存。一級緩存是默認啓用的。
3)數據庫獨立查詢: HQL(Hibernate查詢語言)是SQL的面向對象版本。它生成獨立於數據庫的查詢。所以你不需要編寫數據庫特定的查詢。在Hibernate之前,如果項目中的數據庫發生更改,我們還需要更改SQL查詢以及導致維護問題。
4)自動創建表格: Hibernate框架提供了自動創建數據庫表格的功能。所以不需要手動在數據庫中創建表。
5)簡化了複雜的加入:要提取的數據形成的多個表很容易在休眠框架。
6)提供查詢統計和數據庫狀態: Hibernate支持查詢緩存,並提供查詢和數據庫狀態的統計信息。從javatpoint
你去圖表
信息,我們有有數據成員一個Person類:登錄,姓氏,名字和地址。現在每個Person對象的Address都是Address類的一個對象。
現在看看數據庫表。我們有一個對應於Person類的Person表和一個Address類的Address表。現在這兩張表之間有關係。地址表(ID)的主鍵映射到Person表的外鍵(addr)。這樣兩個表格之間就建立了一種關係。
但是對於我們的Person和Address類我們沒有這樣的關係。因此,我們所做的是將地址作爲單獨的對象處理,然後與Person類集成。所以我們實際上正在使用面向對象的方法來妥協,以匹配表的關係方法。這實際上是解決這個問題的一個非常糟糕的方法,因爲我們在處理表中的數據和使用對象的類之間存在巨大的差距。
此問題在所謂的對象關係映射(ORM)中處理,我們在這裏匹配面向對象和關係的兩個概念。 ORM允許你使用java對象作爲關係數據庫的表示。
Hibernate是一個ORM框架 - 您描述了您的對象在數據庫中的表示方式,而hibernate處理轉換。
優秀的答案!你有沒有機會將包含使用ORM和Hibernate的應用程序的圖表與使用JDBC的應用程序圖形進行對比? – rrazd
我不認爲這將是一個很好的圖 - ORM使用對象;數據庫使用表格。現在我不能想出一個很好的方式來說明圖形的差異 – Bozho
你可以確認張貼的圖片是合法的休眠ORM – rrazd