Hibernate總結——基礎知識

 作者:李東龍

    說道Hibernate基礎知識,首先要對ORM進行一下深入的理解。

     ORM是什麼呢?Object-RelationMapping(即對象-關係映射)。

    是一種模式,這種模式在單個組件中負責有實例業務對象的持久化,封裝了數據庫訪問的細節,也就是在上篇博文中寫到的O-R的操作,這就是Hibernate的核心原理。當然這只是數據持久化的一種方式。

     ORM解決主要的問題就是對象-關係映射。因爲項目的業務邏輯模型是面向對象的,而關係型數據模型是面向關係的。

     所以Hibernate把一個持久化的類和數據庫中的一張表對應;類的每一個屬性,對應這表裏的一個字段;類的每一個實例對應這個表的一條記錄。這樣就把一個對象和一個關係型數據表映射在了一起,這就是ORM模式。

     Hibernate開發的文檔裏,把Hibernate定義成了一種對JDBC做了輕量級封裝的對象-關係映射工具。所謂輕量級封裝就是指沒有完全的把JDBC封裝,我們的程序還可以繞過Hibernate層直接訪問數據庫。下面是Hbernate的幾個接口,其中前5個是核心接口,和3個是回調接口。

     1)Configuration:配置Hibernate,啓動Hibernate,創建SessionFactory工廠對象。

     2)SessionFactory:初始化Hibernate,創建Session對象。它是線程安全的,就是說可以多個線程共同操作這個對象,而且是重量級的,在緩存中存儲的大量的SQL語句和映射元素數據。所以這個對象我們不能輕易的創建和銷燬,一個數據庫創建一個SessionFactor工廠對象。

     3)Session:負責保存、修改、刪除、查詢和加載對象。Sessin不是線程安全的,所以我們要避免多個線程共享一個Session,這個Session是輕量級的,就是說創建和銷燬這個Session不需要消耗太多的系統資源.

     4)Transaction:事務管理。

     5)Query:執行數據庫查詢。Query接口包裝了一個HQL語句和SQL語句很相似,但是HQL語句是面向對象的,它引用類名和屬性名,而不是表明和字段名。還有一個接口Criteria完全封裝了基於字符串形式的查詢語句,比Query接口更加面向對象,擅長動態的查詢。

     6)Lifecycle:持久化類實現的接口,讓它的實例能響應被加載、保存、刪除的事件。

     7)Validatable:讓持久化類的實例保存之前進行數據的驗證,不過這個不推薦使用,因爲數據驗證是業務邏輯層的事情,而且這種方式強迫持久化類必須實現Hibernate的特定接口,會影響持久化類的可移植性,因此不推薦使用。

     8) Interceptor:的實現類負責響應持久化類的實例被加載,保存,刪除,更新等事件。

     

     還有一個比較重要的接口Type映射類型接口,用於把對象中的屬性,映射爲數據庫中的字段.Type接口提供了各種實現的類.他們代表了Hibernate的映射類型.

     1)PrimitiveType類:原始映射類型,映射了JAVA的基本類型。包括ByteTypeShortTyepIntegerTypeLongTypeDoubleTypeCharacterTypeBooleanTyep

     2)DateType類:映射了JAVA的日期類型。

     3)BinaryType類:映射了Byte[]數字類型。

     這裏,我們的應用程序不必自己創建Type實例,而是通過Hibernate這個類,訪問它的靜態Type實例。例如Hibernate.STRING的形式訪問StringType實例。還可以實現UserType或者CompositeUserType這兩個接口,來定義用戶自己的映射類型。

     還有一類接口是可擴展接口,比如Hibernate的方言抽象類,指定緩存機制的Cache接口等等。這些因爲我一直也沒用到過所以就不在這裏說明了。想了解它的朋友可以查閱相關的資料。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章