hibernate學習筆記(1)結構與基本數據類型

一,概覽

   Hibernate負責從Java類到數據庫表的映射,以及從Java數據類型到SQL數據類型的映射。另外還提​​供數據查詢和檢索功能。它能夠顯着減小在SQL和JDBC中手動處理數據的開發時間。Hibernate的設計目標是經過消除使用SQL和JDBC進行手動,手工數據處理的須要。(對象關係映射(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序技術,用於實現面向對象編程語言裏不一樣類型系統的數據之間的轉換[1]  。從效果上說,它實際上是建立了一個可在編程語言裏使用的--「虛擬對象數據庫」。)java

   對於只使用存儲過程來實現數據庫中的業務邏輯的以數據爲中心的應用程序來講,Hibernate可能不是最好的解決方案,它對於基於Java的中間層中的面向對象的領域模型和業務邏輯很是有用。可是,Hibernate確定能夠幫助您刪除或封裝特定於供應商的SQL代碼,並簡化將結果集從表格表示轉換爲對象圖形的常見任務。
sql

如下是hibernate架構圖:   數據庫

                                                       

做爲ORM解決方案,Hibernate有效地位於Java應用程序數據訪問層和關係數據庫之間,如上圖所示。Java應用程序利用Hibernate API來加載,存儲,查詢其域數據。這裏咱們將介紹基本的Hibernate API。這將是一個簡短的介紹; 咱們稍後會詳細討論這些合約。
做爲一個JPA提供者,Hibernate實現了Java Persistence API規範,而且JPA接口和Hibernate特定實現之間的關聯能夠在下圖中看到:編程

1)SessionFactory(org.hibernate.SessionFactory)
應用程序域模型到數據庫映射的線程安全(和不可變)表示。充當org.hibernate.Session實例的工廠。該EntityManagerFactory是JPA等價的SessionFactory,基本上這兩個匯聚到同一SessionFactory執行。
A SessionFactory是很是昂貴的建立,因此,對於任何給定的數據庫,應用程序應該只有一個關聯SessionFactory。SessionFactoryHibernate所使用的維護服務,Session(s)例如二級緩存,鏈接池,事務處理系統集成等。
2)Session(org.hibernate.Session)
一個單線程,短暫的對象,在概念上爲「工做單元」 PoEAA建模。在JPA命名法中,Session由an表明EntityManager。
在幕後,Hibernate Session包裝了一個JDBC java.sql.Connection並充當org.hibernate.Transaction實例的工廠。它維護應用程序域模型的通常「可重複讀取」持久性上下文(第一級緩存)。
3)Transaction(org.hibernate.Transaction)
應用程序使用單線程,短時間的對象來劃分單個物理事務邊界。 EntityTransaction是JPA的等價物,它們都充當抽象API來隔離正在使用的底層事務系統(JDBC或JTA)的應用程序。緩存

4)Query 對象
Query 對象使用 SQL 或者 Hibernate 查詢語言(HQL)字符串在數據庫中來檢索數據並創造對象。一個查詢的實例被用於連結查詢參數,限制由查詢返回的結果數量,並最終執行查詢。
5)Criteria 對象
Criteria 對象被用於創造和執行面向規則查詢的對象來檢索對象。安全

二,類型

1, org.hibernate.type.Type:                                                                                                                                  Hibernate類型既不是Java類型,也不是SQL數據類型。它提供了關於這二者的信息以及理解之間的編組。
當在Hibernate的討論中遇到術語類型時,它可能會根據上下文來引用Java類型,JDBC類型或Hibernate類型。               Hibernate類型既不是Java類型,也不是SQL數據類型。它提供了關於這二者的信息以及理解之間的編組。當在Hibernate的討論中遇到術語類型時,它可能會根據上下文來引用Java類型,JDBC類型或Hibernate類型。架構

2,hibernate中的類型與java中的數據類型對應關係:app

。。。具體類型可參考官網,這些映射是由Hibernate中的一個叫作org.hibernate.type.BasicTypeRegistry的服務來管理的,它基本上維護着一個由名字鍵入的org.hibernate.type.BasicType(org.hibernate.type.Type 類型實現)實例的映射。這是前面表格中「BasicTypeRegistry key(s)」列的用途。編程語言

相關文章
相關標籤/搜索