1. 程式人生 > >Hibernate(5.3.7版)核心API

Hibernate(5.3.7版)核心API

1、Configuration

該介面只存在系統初始化階段,將SessionFactory建立完成,語法如下:

Configuration configuration = new Configuration().configure();

或者:

Configuration configuration = new Configuration().configure("xml檔案位置");

2、SessionFactory

該介面負責hibernate初始化和建立Session物件,起到緩衝區作用,hibernate將自動生成的SQL語句、對映資料和某些可重複利用的資料放在這個緩衝區中。

SessionFactory sessionFactory = config.buildSessionFactory();
  • 執行緒安全,同一個例項能夠供多個執行緒共享
  • 重量級,不能隨意建立和銷燬例項

通常抽取出HibernateUtils工具類,用來提供session物件:

public class HibernateUtils{
    //宣告一個私有的靜態final型別的Configuration物件
    private static final Configuration config;
    //宣告一個私有的靜態final型別的sessionFactory物件
    private static final SessionFactory factory;
    //通過靜態程式碼塊構建SessionFactory
    static {
        config = new Configuration().configure();
        factory = config.buildSessionFactory();
    }
    //提供一個公有的靜態方法供外部獲取,並返回一個session物件
    public static Session getSession(){
        return factory.openSession();
    }
    
}

3、Session

應用程式與資料庫之間互動操作的一個單執行緒物件,主要為持久化物件提供建立、讀取和刪除等功能。

//採用openSession建立
Session session = sessionFactory.openSession();
//採用getCurrentSession建立
Session session = factory.getCurrentSession();

採用openSession:SessionFactory直接建立一個新的session例項,在使用完後需要呼叫close()方法進行手動關閉。
採用getCurrentSession:會將建立的Session的例項繫結在當前執行緒,在提交或回滾操作時自動關閉。

4、Transaction

資料庫事務介面,對底層事務介面進行了封裝。

Transaction trans = session.beginTransaction();
  • commit():提交相關聯的session例項
  • rollback():回滾,撤銷事務操作
  • wasCommitted():檢查事務是否提交

5、Query

1、獲得Hibernate Session物件
2、編寫HQL語句
3、呼叫session.createQuery建立查詢物件
4、如果HQL語句包含引數,呼叫Query的setXxx設定引數
5、呼叫Query物件的list()或uniqueResult()方法執行查詢