Hibernate有五大核心接口,分別是:Session Transaction Query SessionFactoryConfiguration 。這五個接口構成了Hibernate運行的基本要素,能夠執行存取,持久化,事務管理等操做。這五個接口能夠位於系統的業務邏輯層和持久化層。下面是一張Hibernate的關係圖:java
Session接口 Session 接口對於Hibernate 開發人員來講是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,建立和銷燬它都不會佔用不少資源。這在實際項目中確實很重要,由於在客戶程序中,可能會不斷地建立以及銷燬Session對象,若是Session 的開銷太大,會給系統帶來不良影響。可是Session對象是非線程安全的,所以在你的設計中,最好是一個線程只建立一個Session對象。 session能夠看做介於數據鏈接與事務管理一種中間接口。咱們能夠將session想象成一個持久對象的緩衝區,Hibernate能檢測到這些持久對象的改變,並及時刷新數據庫。咱們有時也稱Session是一個持久層管理器,由於它包含這一些持久層相關的操做, 諸如存儲持久對象至數據庫,以及從數據庫從得到它們。須要注意的是,Hibernate的session不一樣於JSP 應用中的HttpSession。當咱們使用session這個術語時,咱們指的Hibernate 中的session,而咱們之後會將HttpSesion 對象稱爲用戶session。數據庫
SessionFactroy接口負責初始化Hibernate。它充當數據存儲源的代理,並負責建立Session對象。這裏用到了工廠模式。須要注意的是SessionFactory並非輕量級的,由於通常狀況下,一個項目一般只須要一個SessionFactory就夠,當須要操做多個數據庫時,能夠爲每一個數據庫指定一個SessionFactory。安全
Transaction接口負責事務相關的操做,通常在Hibernate的增刪改中出現,可是使用Hibernate的人通常使用Spring去管理事務。session
Query負責執行各類數據庫查詢。它可使用HQL語言或SQL語句兩種表達方式。它的返回值通常是List。須要本身轉換。app
Configuration對象用於配置並根啓動Hibernate。Hibernate應用經過Configuration實例來指定對象—關係映射文件的位置或者動態配置Hibernate的屬性,而後建立SessionFactory實例。咱們能夠查看Configuration的源代碼,它的configure()方法是這樣實現的:oop
咱們看到它是在這裏指定了ORM文件的位置,這就是爲何Hibernate老是默認到classpath下去尋找hibernate.cfg.xml文件的緣由了。實際上咱們還能夠經過configure(String resource)來動態的指定配置文件,只不過一般咱們都是採用的默認設置罷了。這樣的話咱們的配置文件就都被讀取了,同時配置文件中經過<mapping>元素引入的映射文件也被讀取了。ui
1.經過Configuration().configure();讀取並解析hibernate.cfg.xml配置文件this
2.由hibernate.cfg.xml中的<mappingresource="com/xx/User.hbm.xml"/>讀取並解析映射信息spa
3.經過config.buildSessionFactory();//建立SessionFactory.net
4.sessionFactory.openSession();//打開Sesssion
5.session.beginTransaction();//建立事務Transation
6.persistent operate持久化操做 //通常指Save這個方法
7.session.getTransaction().commit();//提交事務
8.關閉Session
9.關閉SesstionFactory