(一) org.hibernate.cfg.Configuration類
讀取配置文件并創(chuàng)建唯一的SessionFactory對象.(一般,程序初始化hibernate時創(chuàng)建.)
Configuration config=new Configuration().config(); //自動查找CLASS指定路徑下的hibernate.cfg.xml文件.
(二) org.hibernate.SessionFactory接口
主要作用是創(chuàng)建Session對象.(N個數(shù)據(jù)庫只有N個SessionFactory對象并通過N個Configuration實例根據(jù)不同的配置文件創(chuàng)建.因此對象是不可改變的,所以為接口.)
SessionFactory sessionFactory=config.buildSessionFactory();
(三) org.hibernate.Session接口
持久化操作的核心API,java程序與hibernate進行交互時所使用的主要接口.他有生命周期,以事務(wù)開始和結(jié)束為邊界.
主要功能是讀取,創(chuàng)建和刪除映射的實體對象的實例.這一系列的操作會轉(zhuǎn)化為對數(shù)據(jù)庫表中數(shù)據(jù)的增加,修改,查詢和刪除操作.
Session session =sessionFactory.openSession();
(實體對象:與數(shù)據(jù)庫中表進行映射的類.)
操作實體方法:所有方法都是在事務(wù)提交結(jié)束時才真正執(zhí)行相應(yīng)操作.
void save(Object object) :用于瞬態(tài)對象實例的轉(zhuǎn)持久化操作,相當于INSERT.
void update(Object object):必須設(shè)置標識符(object.setId(....)),根據(jù)標識符更新數(shù)據(jù).相當于UPDATE.
void delete(Object object) :相當于DELETE.
(1)創(chuàng)建查詢對象:調(diào)用方法獲得持久對象.(結(jié)果集,數(shù)據(jù)庫中的數(shù)據(jù).)
Query createQuery(String queryString) //用的最多.可用HQL語句直接更新,刪除數(shù)據(jù).
Criteria createCriteria(Class persistentClass)
SQLQuery createSQLQuery(String queryString)
(2)創(chuàng)建事務(wù)
Transaction beginTransaction()
(四) org.hibernate.Transaction接口
用于事務(wù)管理.
void commit():提交事務(wù).
(五) org.hibernate.Query接口
setXxx:設(shè)置HQL語句中的輸入?yún)?shù).
Query setMaxResults (int maxResults) :結(jié)果集的最大記錄總數(shù).
****************以下兩屬性,常用于分頁處理*****************
Query setFirstResult(int firstResult) :從結(jié)果集的第幾條記錄開始.
Query setFetchSize(int fetchSize) :從結(jié)果集中取(fetch)多少條記當出來.
-------------------------------------------------------------------------------------------------------
List list():返回查詢結(jié)果集為List類型.(讀取全部數(shù)據(jù)映射為內(nèi)存的實體對象(即內(nèi)存中的數(shù)據(jù)庫).資源消耗大, 但可以按索引位置隨機查找數(shù)據(jù).)
Iterator iterate():返回查詢結(jié)果集為Iterator類型.(只能按照從前向后的順序查找數(shù)據(jù).但節(jié)省資源,只對查找的數(shù)據(jù)映射為實體對象.)
Object uniqueResult():只返回查詢結(jié)果集中,滿足第一個條件的數(shù)據(jù).
ScrollableResults scroll():返回查詢結(jié)果集為Iterator類型.