爲何要使用Hibernate?

一、講解什麼是Hibernate。 java

Hibernate是一個開放源代碼的對象關係映射(ORM)框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。 程序員

二、講解Hibernate的工做原理。 sql

一、讀取並解析配置文件。 數據庫

二、讀取並解析映射文件。 編程

三、建立SessionFactory。 緩存

四、打開Session。 安全

五、建立事務Transaction。 session

六、持久化操做。 框架

七、提交事務。 分佈式

八、關閉Session。

九、關閉SessionFactory。

三、講解使用Hibernate的優勢。

一、Hibernate對JDBC訪問數據庫的代碼作了封裝,大大簡化了數據訪問層繁瑣的重複性代碼。

二、Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現,很大程度上簡化了dao層編碼工做。

三、Hibernate使用java反射機制,而不是字節碼加強程序類實現透明性。

四、Hibernate的性能很是好,由於它是一個輕量級框架。映射的靈活性很出色。它支持不少關係型數據庫,從一對一到多對多的各類複雜關係。


附上Hibernate的一些知識:

Hibernate的緩存:

一、內部緩存在Hibernate中又叫一級緩存,屬於應用事務級緩存。

二、二級緩存

A). 應用級緩存。 

B).分佈式緩存。條件:數據不會被第三方修改,數據在可接受範圍、數據更新頻率低,同一數據被系統頻繁使用、非關鍵數據。

C).第三方緩存的實現。

Hibernate的查詢方式:

一、HQL(Hibernate Query Language)

此方法跟sql語句類似,但又有不一樣。HQL是面向對象的,在HQL中對象的名稱和屬性是大小寫敏感的。

二、Criteria query

它是HQL的延伸,提供了一些高級查詢的功能。

三、Native SQL Query。

就是用sql語句查詢,Hibernate也支持sql語句。

如何優化Hibernate:

一、使用雙向一對多關聯,不適用單向一對多。參考:http://blog.csdn.net/jawsy/article/details/396479 

     和 http://blog.csdn.net/jawsy/article/details/396461   

二、靈活使用單向一對多關聯。

三、不用一對一,用多對一取代。

四、配置對象緩存,不用集合緩存。

五、一堆多集合使用bag,多對多用set.

六、繼承類使用顯式多態。

七、表字段要少,不要怕表關聯多。

Hibernate的核心接口一共5個,分別是Session、SessionFactory、Transaction、Query 和 Configuration。

·Session接口:Session接口負責執行被持久化對象的CRUD操做(CRUD的任務是完成與數 據庫的交流,包含了不少常見的SQL語句。)。但須要注意的是Session對象是非線程安全的。同時,Hibernate的session不一樣於JSP 應用中的HttpSession。這裏當使用session這個術語時,其實指的是Hibernate中的session,而之後會將 HttpSesion對象稱爲用戶session。

·SessionFactory接口:SessionFactory接口負責初始化Hibernate。它 充當數據存儲源的代理,並負責建立Session對象。這裏用到了工廠模式。須要注意的是SessionFactory並非輕量級的,由於通常狀況下, 一個項目一般只須要一個SessionFactory就夠,當須要操做多個數據庫時,能夠爲每一個數據庫指定一個SessionFactory。

·Configuration接口:Configuration接口負責配置並啓動Hibernate,建立SessionFactory對象。在Hibernate的啓動的過程當中,Configuration類的實例首先定位映射文檔位置、讀取配置,而後建立SessionFactory對象。

·Transaction接口:Transaction接口負責事務相關的操做。它是可選的,開發人員也能夠設計編寫本身的底層事務處理代碼。

·Query和Criteria接口:Query和Criteria接口負責執行各類數據庫查詢。它可使用HQL語言或SQL語句兩種表達方式。

相關文章
相關標籤/搜索