Hibernate學習——API學習

一.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裏面的方法

  •   save(),update(),saveOrUpdate()            用於增長和修改對象
  •        delete()                                                   用於刪除對象
  •        get()和load()                                           根據主鍵查詢
  •     createQuery()和createSQLQuery()         用於數據庫操做對象             
  •       createCriteria()                                         條件查詢                            

 

四:Transaction對象

    Transaction接口主要用於管理事務,它是hibernate的數據庫事務接口。

  hibernate開啓事務:

Transaction tx = session.beginTransaction();

  方法:

  • commit()方法:提交相關聯的session實例
  • rollback()方法:撤銷事務操做。
相關文章
相關標籤/搜索