Hibernate(5.3.7版)核心API
阿新 • • 發佈:2018-12-09
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()方法執行查詢