1.Configuration接口:Configuration接口負責配置並啓動Hibernate,創建SessionFactory對象。在Hibernate的啓動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然後創建SessionFactory對象。
File file=new File("d:/hibernamte2.cfg.xml");
Configuration configure = new Configuration().configure(file);
c.另外一種更常用,就是用URL,如下代碼:
URL url = new URL(http://localhost/hibernate2.cfg.xml);
Configuration configure = new Configuration().configure(url);
重要方法:
public Configuration configure (String resource)throws HibernateException;在參數中指定要加載的XML格式的配置文件
public Configuration configure(URL url)thrwos HibernateException:
public SessionFactory buildSessionFactory() throws HiberanteExcepiton: 根據配置文件實例化一個新的SessionFactory對象,這個SessionFactory將是不可變的,所以在創建了SessionFactory對象後,對Configuration對象作出的所有修改不會影響以前創建出的SessionFactory對象。
Configuration對象的作用是除了有讀取配置文件的功能,還能創建SessionFactory對象。通常,一個應用程序會創建一個Configuration對象,然後利用Configuration實例建立唯一的SessionFactory實例,這就意味着Configuration對象只存在於系統的 初始化階段,然後所有的持久化操作都能通過這個唯一的SessionFactory實例來進行。
Configuration對象只有在Hibernate 進行初始化的時候才需要創建,當使用Configuration對象的實例創建了SessionFactory對象的實例後,其配置信息已經綁定在他返回的SessionFactory對象實例中。因此,一般情況下,得到SessionFactory對象後,Configuration對象的使命就結束了。
1:他是線程安全的,同一個實例可以被應用的多個線程共享
2:他是重量級的,不能隨意創建和銷燬他的實例,如果應用只訪問一個數據庫,只需要創建一個SessionFactory的實例,在應用初始化的時候創建實例。如果應用需要訪問多個數據庫,那麼就需要根據不同的配置文件(包括有特定數據庫的配置)創建多個Configuration實例並構建與每個數據庫相對應的sessionFactory實例。
3:以後對Configuration對象勢力作出的修改都不會影響已經創建好的SessionFactory實例,如果需要使用基於改動後的Configuration實例的SessionFactory,需要從Configuration對象中重新創建新的SessionFactory實例。
org.hibernate Interface SessionFactory
public interface SessionFactory extends Referenceable,Serializable:創建Session,他是客戶端獲取Session對象的工廠
常用的方法:
public Sessioin openSession() throws HIbernateException:創建一個數據庫連接,並把他放在Session對象中,並返回
public Session openSession(Connection connection):創建一個Session對象,並把參數給出的 connection對象放在其中
public boolean isClosed():判斷當前SessionFactory對象是否關閉了
public void close() throws HibernateException 關閉SessionFactory以及釋放所有的SessionFactory涉及到的資源(緩存,數據庫連接池等)但在調用此方法之前,應該確定沒有當前對象創建的Session沒有關閉
1,不是線程安全的,應該避免多個線程共享同一個Session實例
2,Session實例是輕量級的,所謂輕量級:是指他的創建和刪除不需要消耗太多資源
3,Session對象內部有一個緩存,被稱爲Hibernate第一緩存,他存放被當前工作單元中加載的對象,每個Session實例都有自己的緩存。
org.hibernate Interface Session
public interface Session extends Serializable : 是一個Java application 和Hibernate之間主要的運行時接口,這是執行持久化服務的中心API
主要方法:
public Transaction beginTransaction() throws HibernateException:返回和當前Session對象相互聯繫的Transaction對象(表示在數據庫中重新開始一個事務)
public Transaction getTransaction(): 返回和當前session聯繫的Transaction對象
public Connection connection close() throws HibernateExcepton:結束當前的Session對象
public void clear() :清空Session,清除所有保存在當前Session緩存中的實體對象,終止所有正在執行的方法(eg: save() , update() ,delete() .....)
public Serializable save(Object object)throws HibernateException 對當前參數指定的對象進行持久化(系統會首先賦予參數對象一個標識符OID),他相當於insert語句 後面在詳細介紹
public Connection connection() throws HibernateException 得到當前Session 中包含的Connection對象。
public boolean contains(Object object):判斷參數給出的對象(持久化類)是否在當前Session的緩存中
public void evict(Object object) throws HibernateException :將參數給出的Object從當前Session對象類中刪除,使這個對象從持久態變成遊離態,這種狀態的改變不會引起對數據庫的同步,後面詳細介紹
public Object load(Class theclass ,Serializable id) throws HibernateException 返回第一個參數指定類對應的表中,第二個參數指定的行(第二個參數就是要取得對象的OID,他對應表中主鍵列的值)
public void update(Object object) throws HibernateException :更新一個對象到數據庫中,後面在詳細介紹
public void delete (Object object)throws HibernateException:從數據庫中刪除和參數指定的對象對應的記錄
public Object get(Class class,Serializable id) throws HibernateException:和load()方法一樣區別在於,如果數據庫表中沒有對應的記錄,get()方法返回null,load()方法將報異常
public void commit() throws HibernateException 刷新當前的Session以及結束事務的工作,這個方法將迫使數據庫對當前的事務進行提交
public void rollback() throws HibernateException :強迫回滾當前事務
public boolean isActive() throws HibernateException: 這個事務是否存活