一.Configuration對象sql
解釋:Hibernate的配置文件對象,是Hibernate啓動加載的第一個對象,它會定位到映射文檔的位置,讀取配置文件,建立一個SessionFactory對象。數據庫
做用:加載核心配置文件緩存
用法:安全
1.若是是Hibernate.properties文件(裏面是鍵值對存放的配置信息)session
Configuration cfg = new Configuration() //直接new就好了
2.若是是Hibernate.cfg.xml文件app
Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); //後面還要在跟一個configure()方法,方法裏面能夠傳配置文件路徑,不寫默認加載就在src下名字叫hibernate.cfg.xml文件
若是該配置文件在src下的config包下
Configuration cfg = new Configuration().configure("/config/hibernate.cfg.xml");
注意:若是hibernate.cfg.xml裏面沒有加載映射文件(<mapping resource="">),那麼就須要該對象來幫你加載映射文件ui
Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); cfg.addResource("com/xxx/pojo/Customer.hbm.xml");
二。SessionFactory-session工廠對象spa
概述:SessionFactory接口負責HIbernate的初始化和創建session對象。他在hibernate中起到了一個緩衝區做用,hibernate能夠將自動生成的sql語句、映射數據以及某些能夠重複利用的數據放在這個緩衝區中,同時他還保存了對數據庫配置的全部映射關係,維護當前的二級緩存。hibernate
獲取:線程
SessionFactory sessionFactory = cfg.buildSessionFactory();//貌似這個方法很通用
注意:不一樣版本
1)在hibernate 3.x中的寫法 SessionFactory sf = cfg.buildSessionFactory();
2)hibernate 4.0~hibernate 4.3的寫法 ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
3)hibernate 4.3的寫法 ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); SessionFactory sf = cfg.buildSessionFactory(registry);
4)hibernate 5.1的寫法 StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build(); SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
特色:
通常狀況下,一個項目只須要一個SessionFactory,只有當有多個數據源的時候,纔會爲每一個數據源創建一個SessionFactory實例
三.Session對象
概述:Session接口負責負責被持久化對象的CRUD操做。Session對象是線程不安全的,(這個session其實就至關於jdbc裏面的connection)是應用程序與數據庫之間的交互操做的一個單線程對象,是hibernate運轉核心。
功能:爲持久化對象提供建立,讀取和刪除的能力,全部的持久化對象必須在session的管理下才能夠進行持久化操做(爲後面持久化類的狀態作鋪墊)
獲取:
1.第一種方式獲取:
Session session = sessionFactory.openSession(); //SessionFactory直接建立一個新的session實例,而且使用完成後須要調用close方法將session關閉
2.第二種方式:
Session session = SessionFactory.getCurrentSession(); //將session對象綁定到當前的線程中,隨着事務提交或者回滾,線程結束,session也會自動銷燬
session裏面的方法
四:Transaction對象
Transaction接口主要用於管理事務,它是hibernate的數據庫事務接口。
hibernate開啓事務:
Transaction tx = session.beginTransaction();
方法: