天天看點

Hibernate學習總結(2)——核心配置檔案hibernate.cfg.xml

• Hibernate 配置檔案主要用于配置資料庫連接配接和 Hibernate 運作時所需的各種屬性 • 每個 Hibernate 配置檔案對應一個 Configuration 對象 • Hibernate 配置檔案可以有兩種格式 : – hibernate.properties – hibernate.cfg.xml 這裡我隻介紹XML檔案格式的配置檔案方式

該種配置方式必須将檔案名命名為hibernate.cfg.xml

且位置需放置在src目錄下,否則可能會造成初始化錯誤

Hibernate學習總結(2)——核心配置檔案hibernate.cfg.xml

檔案名和檔案路徑的問題處理好之後,我們可以上手開始進行配置了。

1.首先我們要進行資料庫的相關資訊配置,這也是資料庫連接配接離不開的

即進行如下資訊的配置

• JDBC 連接配接屬性 – connection.url :資料庫 URL – connection.username :資料庫使用者名 – connection.password :資料庫使用者密碼 – connection.driver_class :資料庫 JDBC 驅動  – dialect :配置資料庫的方言,根據底層的資料庫不同産生不同的 sql 語句, Hibernate 會針對資料庫的特性在通路時進行優化

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/*</property><!--*處為所要連接配接的資料庫名稱-->
<property name="connection.username">root</property>
<property name="connection.password">******</property>
           
     <!-- 配置資料庫方言
	在MySQL裡面實作分頁關鍵字limit,隻能使用MySQL裡
	在oracle資料庫,實作發頁用rownum
	讓hibernate架構識别不同資料庫的自己特有的語句
    -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
           

• C3P0 資料庫連接配接池屬性 – hibernate.c3p0.max_size: 資料庫連接配接池的最大連接配接數 – hibernate.c3p0.min_size: 資料庫連接配接池的最小連接配接數 – hibernate.c3p0.timeout:   資料庫連接配接池中連接配接對象在多長時間沒有使用過後,就應該被銷毀 – hibernate.c3p0.max_statements:  緩存 Statement 對象的數量 – hibernate.c3p0.idle_test_period:  表示連接配接池 檢測線程 多長時間檢測一次池内的所有連結對象是否逾時 . 連接配接池本身不會把自己從連接配接池中移除,而是專門有一個線程按照一定的時間間隔來做這件事,這個線程通過比較連接配接對象最後一次被使用時間和目前時間的時間差來和 timeout 做對比,進而決定是否銷毀這個連接配接對象。 – hibernate.c3p0.acquire_increment: 當資料庫連接配接池中的連接配接耗盡時 , 同一時刻擷取多少個資料庫連接配接

2.其次則是一些當實際開發時根據需要進行的配置

– show_sql :是否将運作期生成的 SQL 輸出到日志以供調試。取值 true| false – format_sql :是否将 SQL 轉化為格式良好的 SQL. 取值 true| false – hbm2ddl.auto :在啟動和停止時自動地建立,更新或删除資料庫模式。取值 create| update | create-drop | validate • hibernate.jdbc.fetch_size :實質是調用 Statement.setFetchSize () 方法 設定 JDBC 的 Statement 讀取資料的時候每次從資料庫中取出的記錄條數 。     – 例如一次查詢 1 萬條記錄,對于 Oracle 的 JDBC 驅動來說,是不會 1 次性把 1 萬條取出來的,而隻會取出 fetchSize 條數,當結果集周遊完了這些記錄以後,再去資料庫取 fetchSize 條資料。是以大大節省了無謂的記憶體消耗。 FetchSize 設的越大,讀資料庫的次數越少,速度越快; FetchSize 越小,讀資料庫的次數越多,速度越慢。 Oracle 資料庫的 JDBC 驅動預設的 FetchSize = 10 ,是一個保守的設定,根據測試,當 FetchSize=50 時,性能會提升 1 倍之多,當 f etchSize =100 ,性能還能繼續提升 20% , FetchSize 繼續增大,性能提升的就不顯著了。并不是所有的資料庫都支援 FetchSize 特性,例如 MySQL 就不支援

• hibernate.jdbc.batch_size : 設定對資料庫進行批量删除,批量更新和批量插入的時候的批次大小 ,類似于設定緩沖區大小的意思。 batchSize 越大,批量操作時向資料庫發送 sql 的次數越少,速度就越快。     – 測試結果是當 BatchSize=0 的時候,使用 Hibernate 對 Oracle 資料庫删除 1 萬條記錄需要 25 秒, BatchSize = 50 的時候,删除僅僅需要 5 秒! Oracle 資料庫 b atchSize =30 的時候比較合适。 例如:

        <!-- 輸出底層sql語句 -->
		<property name="show_sql">true</property>
		<!-- 輸出底層sql語句格式 -->
		<property name="format_sql">true</property>
		<!-- hibernate幫建立表,需要配置之後
			update:如果已經表存在,則更新,不存在,則建立
		 -->
		 <property name="hbm2ddl.auto">update</property>
           

3.進行對象映射檔案(*.hbm.xml)的配置

一個核心配置檔案可同時配置多個對象映射檔案

需注意的是,對象映射檔案若是放在src下,則可直接寫檔案名

<mapping resource="Customer.hbm.xml"/>
<mapping resource="Linkman.hbm.xml"/>
           

若是放在src下的包中,則需要寫上全路徑名

<mapping resource="com/hibernate/entity/Customer.hbm.xml"/>
           

若對象映射檔案的路徑和hibernate.cfg.xml檔案中的配置不符合以上規範,則同樣會出現初始化錯誤

Hibernate學習總結(2)——核心配置檔案hibernate.cfg.xml

繼續閱讀