說到hibernate,英文意思:冬眠。給我印象最深的是孫文琴老師的那本hibernate深入詳解分頁上的那句話"let you java object hibernate in the relation database"。其實后邊學完了再回頭看這句話的時候就發現其實這句話說的很形象,它深刻的反映了hibernate在軟件開發中的重要作用:ORM(object relation mapping 對象關系映射),那么要學習hibernate首先需要了解的就是ORM。
所謂ORM的解釋,可以從維基百科中查到:
對象關系映射(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式設計技術,用于實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬對象數據庫”。如今已有很多免費和收費的ORM產品,而有些程序員更傾向于創建自己的的ORM工具。
面向對象是從軟件工程基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關系數據庫則是從數學理論發展而來的,兩套理論存在顯著的區別。為了解決這個不匹配的現象,對象關系映射技術應運而生。
簡單的說:ORM相當于中繼數據。具體到產品上,例如下邊的ADO.NET Entity Framework。DLINQ中實體類的屬性[Table]就算是一種中繼數據。
對象關系映射成功運用在不同的面向對象持久層產品中,如:Torque,OJB,Hibernate,TopLink,Castor JDO,TJDO,Active Record,NHibernate,ADO.NET Entity Framework 等。
以上是維基百科中解釋。所的很官僚,就是說的我們大家一般的人不太能理解。我個人的理解就是:對我們這些對JDBC常用操作非常厭倦的人來了個封裝,然后給我們各種常用的接口,而且讓我們感覺不到我們在操縱數據庫,而只是在調人家給的接口,這無形中讓我們感覺到很舒服,很愜意。
hibernate同樣是ORM工具,那么它給我們提供了那些接口呢?讓我列舉幾個:
Session、負責執行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句。)。
SessionFactory、負責初始化Hibernate。它充當數據存儲源的代理,并負責創建Session對象。這里用到了工廠模式
Transaction、 負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層事務處理代碼
Query、Query和Criteria接口負責執行各種數據庫查詢。它可以使用HQL語言或SQL語句兩種表達方式
Configuration、負責配置并啟動Hibernate,創建SessionFactory對象。