Hibernate的API及配置詳解

這裏寫圖片描述
一、org.hibernate.cfg.Configuration

1、類的主要作用是加載主配置文件以及映射文件,啓動hibernate
2、默認獲取hibernate.cfg.xml配置文件
    Configuration configer = new Configuration().configure();
3、如果配置文件名稱有改變,則用帶參數的構造器
    Configuration configer = new Configuration().configure("xxx.cfg.xml");

二、SessionFactory接口

1、用來獲取和管理我們的session,它在hibernate中其實是相當於一個緩衝區的作用,一個數據庫對應一個sessionFactory,是一個重量級的對象,比較重要。
2、是單例的,但是是線程安全的,大多數成員變量都是final

三、Session接口
1、程序和數據庫的一次交互會話,每次執行一個數據庫的事務,都要創建新的session實例,用完後需要關閉
2、輕量級接口是多例的,是線程不安全的
3、獲取方式:
Session session = SessionFactory.getCurrentSession();//獲取當前線程中的session,會自動關閉session.
Session session = SessionFactory.openSession;//創建一個session對象,需要手動關閉session
4、如何保證一個線程的session是線程安全的,需要在hibernate.cfg.xml裏面配置

<property name="hibernate.current_session_context_class">thread</property>

四、transaction接口

1、事務的開啓: session.getTransaction().begin();
2、事務的提交: session.getTransaction().commit();
3、事務的回滾: session.getTransaction().rollback();

五、hibernate.cfg.xml配置詳解:

1:數據庫連接配置
* 在hibernate.cfg.xml裏面配置數據庫的四要素
* 通過hibernate.properties文件進行配置
注意:當cfg配置文件和properties文件同時配置了數據庫信息的時候,cfg配置文件優先
2:數據源的配置
* 我們一般會用c3p0的數據源管理 詳見hibernate.cfg.xml文件
* 在我們沒有單獨配置數據源管理的時候 ,它會用hibernate自帶的數據源(not for product use)
3:方言
* 不同的數據庫會存在一些語法上的差異,而方言是解決這種差異的一種手段
* 解決hql翻譯成sql,保證語法上的正確
4:加入映射文件

<mapping resource="com/xxx/hibernatestudy/sysmanage/entity/student.hbm.xml" />
5:自動建表配置
<property name="hibernate.hbm2ddl.auto">update/create</property>

六、持久化對象與映射文件的配置

<hibernate-mapping>
    <class name="com.xxx.hibernatestudy.sysmanage.entity.Student" column="T_STUDENT">
        <id name="stId" column="ST_ID">
            <generator>native</generator>
        </id>
        <property name="stName" column="ST_NAME"></property>
        <property name="stAge" column="ST_AGE"></property>      
    </class>
</hibernate-mapping>

關於主鍵段<generator></generator>中的值的配置詳解如下:

id的生成策略有如下幾種方式
* increment
hibernate自己維護主鍵的值,每次插入之前,max(ST_ID)+1,不適合高併發和集羣環境
* identity
數據庫自身的增長來維護主鍵值 如mysql的auto_increment
* sequence
在數據庫中創建一個序列,hibenate會調用序列來維護主鍵 ,oracle比較實用
* native
它會根據使用的數據庫類型,從identity和sequence兩種方式選取 一種合適的
* uuid
採用uuid(universally unique identifier)算髮來生成一個唯一識別碼
ip地址+jvm啓動時間+當前系統時間+計數器= 32位
* assigned
由程序自己設置id值,比如身份證,學好之類的業務編碼
這裏寫圖片描述

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