search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Hibernate的工作原理及應用

一、原理:

1.通過Configuration.configure;讀取並解析hibernate.cfg.xml配置文件

2.hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>讀取並解析映射信息

3.通過config.buildSessionFactory;//創建SessionFactory

4.sessionFactory.openSession;//打開Sesssion

5.session.beginTransaction;//創建事務Transation

6.persistent operate持久化操作

7.session.getTransaction.commit;//提交事務

8.關閉Session

9.關閉SesstionFactory

二、Hibernate的應用

(一)、為什麼要用:

1. JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重複性代碼。

2. Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作

3. hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。

4. hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關係資料庫,從一對一到多對多的各種複雜關係。

(二)、Hibernate如何延遲載入? 1. Hibernate2延遲載入實現:a)實體對象 b)集合(Collection

2. Hibernate3 提供了屬性的延遲載入功能

Hibernate在查詢數據的時候,數據並沒有存在與內存中,當程序真正對數據的操作時,對象才存在與內存中,就實現了延遲載入,他節省了伺服器的內存開銷,從而提高了伺服器的性能。

(三)、Hibernate中怎樣實現類之間的關係?(如:一對多、多對多的關係)

類與類之間的關係主要體現在表與表之間的關係進行操作,它們都市對對象進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-oneone-to-manymany-to-many

(四)、說下Hibernate的緩存機制

1. 內部緩存存在Hibernate中又叫一級緩存,屬於應用事物級緩存

2. 二級緩存:

a) 應用及緩存

b) 分散式緩存

條件:數據不會被第三方修改、數據大小在可接受範圍、數據更新頻率低、同一數據被系統頻繁使用、非 關鍵數據 c) 第三方緩存的實現

一級緩存:session級的緩存也叫事務級的緩存,只緩存實體,生命周期和session一致。不能對其進行管理,不用顯示的調用。

二級緩存:sessionFactory緩存,也叫進程級的緩存,使用第3方插件實現的,也值緩存實體,生命周期和sessionFactory一致,可以進行管理。

首先配置第3放插件,我們用的是EHCache,在hibernate.cfg.xml文件中加入

<property name="hibernate.cache.user_second_level_cache">true</property>

在映射中也要顯示的調用,<cache usage="read-only"/>

二級緩存之查詢緩存:對普通屬性進行緩存。如果關聯的表發生了修改,那麼查詢緩存的生命周期也結束了。

在程序中必須手動啟用查詢緩存:query.setCacheable(true);/////////

(五)、Hibernate的查詢方式 SqlCriteria,object comptosition Hql 1、 屬性查詢 2、 參數查詢、命名參數查詢 3、 關聯查詢 4、 分頁查詢 5、 統計函數

(六)、如何優化Hibernate 1.使用雙向一對多關聯,不使用單向一對多 2.靈活使用單向一對多關聯 3.不用一對一,用多對一取代 4.配置對象緩存,不使用集合緩存 5.一對多集合使用Bag,多對多集合使用Set 6. 繼承類使用顯式多態 7. 表欄位要少,表關聯不要怕多,有二級緩存撐腰

加微信(858568103)了解更多的前端、Java知識,了解更多的行業信息。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦