1.什麼是Hibernate Framework?
對象關係映射或對象關係管理(ORM)是將應用程序域模型對象映射到關係數據庫表的編程技術。Hibernate是基於Java的ORM工具,它提供了一個框架,用於將應用程序域對象映射到關係數據庫表,反之亦然。java
Hibernate提供了Java Persistence API的參考實現,使其成爲具備鬆散耦合優點的ORM工具的絕佳選擇。咱們可使用Hibernate持久性API進行CRUD操做。Hibernate框架提供了使用JPA批註以及基於XML的配置將純舊的Java對象映射到傳統數據庫表的選項。面試
一樣,Hibernate配置也很靈活,能夠從XML配置文件以及以編程方式完成。sql
2.使用Hibernate Framework有哪些重要好處?
使用Hibernate框架的一些重要好處是:數據庫
- Hibernate消除了JDBC附帶的全部樣板代碼,並負責管理資源,所以咱們能夠專一於業務邏輯。
- Hibernate框架提供對XML和JPA註釋的支持,這使咱們的代碼實現獨立。
- Hibernate提供了一種與SQL相似的強大查詢語言(HQL)。可是,HQL徹底面向對象,而且瞭解諸如繼承,多態性和關聯之類的概念。
- Hibernate是Red Hat Community的一個開源項目,已在全球範圍內使用。這使它成爲比其餘方法更好的選擇,由於學習曲線很小,而且有大量的在線文檔,而且能夠在論壇中輕鬆得到幫助。
- Hibernate易於與其餘Java EE框架集成,所以很是流行,Spring框架提供了將Hibernate與Spring應用程序集成的內置支持。
- Hibernate支持使用代理對象進行延遲初始化,而且僅在須要時才執行實際的數據庫查詢。
- Hibernate緩存有助於咱們得到更好的性能。
- 對於數據庫供應商特定的功能,Hibernate是合適的,由於咱們還能夠執行本機sql查詢。
Hibernate在前幾年是比較流行,如今感受沒落了,它包含您在ORM工具中將須要的全部功能。編程
3.解釋Hibernate架構。
4. get和load方法之間有什麼區別?
下面給出了get()和load()方法之間的區別。緩存
沒有。 |
get()** |
load() |
1) |
若是找不到對象,則 返回null 。 |
若是找不到對象,則引起ObjectNotFoundException 。 |
2) |
get()方法老是命中數據庫。 |
load()方法不會訪問數據庫。 |
3) |
它返回一個真實的對象,而不是proxy 。 |
它返回一個代理對象。 |
4) |
若是您不肯定實例是否存在,則應使用它。 |
若是您肯定實例存在,則應使用它。 |
5. Hibernate與JDBC相比有什麼優點?
Hibernate框架相對於JDBC的一些重要優勢是:架構
- Hibernate刪除了JDBC API附帶的許多樣板代碼,這些代碼看起來更清晰易讀。
- Hibernate支持繼承,關聯和集合。JDBC API不提供這些功能。
- Hibernate隱式提供事務管理,實際上,大多數查詢沒法在事務外部執行。在JDBC API中,咱們須要使用commit和rollback編寫用於事務管理的代碼。
- JDBC API拋出SQLException ,這是一個已檢查的異常,所以咱們須要編寫許多try-catch塊代碼。在大多數狀況下,它在每一個JDBC調用中都是多餘的,用於事務管理。Hibernate包裝JDBC異常並拋出JDBCException或HibernateException未經檢查的異常,所以咱們不須要編寫代碼來處理它。Hibernate內置的事務管理功能消除了try-catch塊的使用。
- Hibernate查詢語言(HQL)更加面向對象,而且與Java編程語言很是接近。對於JDBC,咱們須要編寫本機SQL查詢。
- Hibernate支持更好的性能緩存,不緩存JDBC查詢,所以性能低下。
- Hibernate提供了一些選項,經過它們咱們也能夠建立數據庫表,由於JDBC表必須存在於數據庫中。
- Hibernate配置可幫助咱們將JDBC之類的鏈接以及JNDI DataSource用於鏈接池。這是企業應用程序中很是重要的功能,而JDBC API徹底沒有。
- Hibernate支持JPA批註,所以代碼獨立於實現,可輕鬆地用其餘ORM工具替換。JDBC代碼與應用程序緊密結合。
歡迎關注
Java架構師社區公衆號.
本文轉載自
Java架構師必看 ,更多內容點擊查看!