讀取解析映射信息。
3、通過config.buildSessionFactory();//得到sessionFactory。
4、sessionFactory.openSession();//得到session。
5、session.beginTransaction();//開啟事務。
6、persistent operate;
7、session.getTransaction().commit();//提交事務
8、關閉session;
9、關閉sessionFactory;
hibernate優點:
1、封裝了jdbc,簡化了很多重複性代碼。
2、簡化了DAO層編碼工作,使開發更對象化了。
3、移植性好,支持各種資料庫,如果換個資料庫只要在配置文件中變換配置就可以了,不用改變hibernate代碼。
4、支持透明持久化,因為hibernate操作的是純粹的(pojo)java類,沒有實現任何介面,沒有侵入性。所以說它是一個輕量級框架。
hibernate延遲載入:
get不支持延遲載入,load支持延遲載入。
1、hibernate2對 實體對象和集合 實現了延遲載入
2、hibernate3對 提供了屬性的延遲載入功能
hibernate延遲載入就是當使用session.load(User.class,1)或者session.createQuery()查詢對象或者屬性的時候
這個對象或者屬性並沒有在內存中,只有當程序操作數據的時候,才會存在內存中,這樣就實現延遲載入,節省了內存的開銷,從而提高了伺服器的性能。
Hibernate的緩存機制
一級緩存:session級的緩存也叫事務級的緩存,只緩存實體,生命周期和session一致。不能對其進行管理。
不用顯式的調用。
二級緩存:sessionFactory緩存,也叫進程級的緩存,使用第3方插件實現的,也只緩存實體,生命周期和sessionFactory一致,可以進行管理。
首先配置第3方插件,我們用的是EHCache,在hibernate.cfg.xml文件中加入
在映射中也要顯式的調用,
二級緩存之查詢緩存:對普通屬性進行緩存。如果關聯的表發生了修改,那麼查詢緩存的生命周期也結束了。
在程序中必須手動啟用查詢緩存:query.setCacheable(true);
優化Hibernate
1、使用一對多的雙向關聯,盡量從多的一端維護。
2、不要使用一對一,盡量使用多對一。
3、配置對象緩存,不要使用集合緩存。
4、表欄位要少,表關聯不要怕多,有二級緩存撐腰。
hibernate 類與類之間關係
關聯關係
聚集關係
繼承關係
Hibernate繼承關係映射策略分為三種:一張表對應一整棵類繼承樹、一個類對應一張表、每一個具體類對應一張表。