Hibernate入門(二)之相關API

Configuration 配置對象.
Configuration主要用於Hibernate框架加載核心配置文件和映射文件.

//這種寫法會去src下讀取hibernate.cfg.xml文件.默認寫法
Configuration conf = new Configuration().configure();
//如果不想使用默認的配置文件,也可以使用指定目錄下的配置文件
Configuration conf = new Configuration().configure("文件位置");
1
2
3
4
SessionFactory Session工廠對象
SessionFactory接口負責Hibernate的初始化和建立Session對象.它在Hibernate中起到一個緩衝區的作用,Hibernate可以將自動生成的SQL語句\映射數據以及某些可以重複利用的數據放在這個緩衝區中.同時它還保存了對數據庫配置的所有映射關係,維護了當前的二級緩存. 
SessionFactory是通過Configuration對象獲取的,起獲取方法如下:

SessionFactory sessionFactory = config.buildSessionFactory();
1
SessionFactory有以下特點:
它是線程安全的,它的同一個實例能夠多個線程共享.
它是重量級的,不能隨意的創建和銷燬它的實例. 
由於SessionFactory的特點,一般情況下,一個項目中只需要一個SessionFactory,只有當應用中存在多個數據源時,才爲每個數據源簡歷一個SessionFactory實例.
Session
Session是應用程序與數據庫之間交互操作的一個單線程對象,是Hibernate運作的中心,它的主要功能是爲持久化對象提供創建\讀取和刪除的能力,所有持久化對象必須在session的管理下纔可以進行持久化操作.

Session的獲取方式及區別
創建SessionFactory實例後,就可以通過它來獲取Session的實例.獲取Session實例有兩種方式,一種是通過openSession()方法,另一種是通過getCurrentSession()方法.代碼如下:

Session session = sessionFactory.openSession();

Session session = sessionFactory.getCurrentSession();
1
2
3
使用openSession方法獲取Session實例時,SessionFactory直接創建一個新的Session實例,並且在使用完成後需要調用close方法進行手動關閉.而getCurrentSession方法創建的Session實例會被綁定到當前線程中,它在提交或回滾操作時會自動關閉.

Session是線程不安全的,多個併發線程同事操作一個Session實例時,就可能導致Session數據存取的混亂(方法內部定義和使用時,不會出現線程安全問題).因此設計軟件架構時,應避免多個線程貢獻改一個Session實例.同時它是輕量級的,創建和銷燬不需要消耗太多的資源.它還有一個緩存,即Hibernate一級緩存,這個緩存主要用於存放當前工作單元加載的對象.

Session中的常用方法
save() update() 和 saveOrUpdate()方法: 用於增加和修改對象.
delete()方法: 用於刪除對象.
get() 和 load()方法: 根據主鍵查詢.
create() 和 createSqlQuery()方法: 用於數據庫操作對象.
createCriteria()方法: 條件查詢.
--------------------- 
作者:xinyang_code 
來源:CSDN 
原文:https://blog.csdn.net/qq_36376387/article/details/78650611 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章