Hibernate.cfg.xml配置文件結(jié)構(gòu)詳解
Hibernate中配置主要分為兩種:
一種包含了Hibernate與數(shù)據(jù)庫的基本連接信息,在Hibernate工作的初始階段偿曙,這些信息被先后加載到Configuration和SessionFactory實例悯恍;
另一種包含了Hibernate的基本映射信息,即系統(tǒng)中每一個類與其對應(yīng)的數(shù)據(jù)庫表之間的關(guān)聯(lián)信息,在Hibernate工作的初始階段,這些信息通過hibernate.cfg.xml的mapping節(jié)點被加載到Configuration和SessionFactory實例。這兩種文件信息包含了Hibernate的所有運行期參數(shù)不脯。
下面我們用詳細的例子來說明這兩種文件的基本結(jié)構(gòu)和內(nèi)容。
<?xml version='1.0' encoding='UTF-8'?>
<!--表明解析本XML文件的DTD文檔位置刻诊,DTD是Document Type Definition 的縮寫,即文檔類型的定義,XML解析器使用DTD文檔來檢查XML文件的合法性防楷。hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在Hibernate3.1.3軟件包中的src\org\hibernate目錄中找到此文件-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!--Hibernate配置文件的根元素,其他文件要包含在其中-->
<hibernate-configuration>
<!--表明以下的配置是針對session-factory配置的,SessionFactory是Hibernate中的一個類则涯,這個類主要負責保存HIbernate的配置信息复局,以及對Session的操作-->
<session-factory>
<!-- 1冲簿,數(shù)據(jù)庫連接信息: -->
<!--配置數(shù)據(jù)庫的驅(qū)動程序,Hibernate在連接數(shù)據(jù)庫時亿昏,需要用到數(shù)據(jù)庫的驅(qū)動程序-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property>
<!--設(shè)置數(shù)據(jù)庫的連接url:jdbc:mysql://localhost:3306/dbname,其中l(wèi)ocalhost表示mysql服務(wù)器名稱峦剔,此處為本機, dbname是數(shù)據(jù)庫名-->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dbname</property>
<!--連接數(shù)據(jù)庫是用戶名-->
<property name="hibernate.connection.username">root </property>
<!--連接數(shù)據(jù)庫是密碼-->
<property name="hibernate.connection.password">123456 </property>
<!--hibernate.dialect 只是Hibernate使用的數(shù)據(jù)庫方言,就是要用Hibernate連接那種類型的數(shù)據(jù)庫服務(wù)器角钩。-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </property>
<!-- 以下信息可選 -->
<!--jdbc.use_scrollable_resultset是否允許Hibernate用JDBC的可滾動的結(jié)果集吝沫。對分頁的結(jié)果集。對分頁時的設(shè)置非常有幫助-->
<property name="jdbc.use_scrollable_resultset">false </property>
<!--connection.useUnicode連接數(shù)據(jù)庫時是否使用Unicode編碼-->
<property name="Connection.useUnicode">true </property>
<!--connection.characterEncoding連接數(shù)據(jù)庫時數(shù)據(jù)的傳輸字符集編碼方式递礼,-->
<property name="connection.characterEncoding">utf-8 </property>
<!--2惨险,數(shù)據(jù)庫連接池信息:-->
<property name="hibernate.connection.pool.size">20 </property>
<!-- 指定連接池的最大連接個數(shù),使用連接池需要加載所有的鏈接池的JAR文件脊髓,JAR文件在Hibernate文件夾下的“l(fā)ib\optional\c3p0”中 -->
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.min_size">10</property>
<property name="hibernate.c3p0.timeout">5000</property><!-- 指定連接池里連接超時時長辫愉,即最大時間 -->
<!--3,數(shù)據(jù)庫一次操作時的記錄數(shù)::-->
<!--jdbc.fetch_size是指Hibernate每次從數(shù)據(jù)庫中取出并放到JDBC的Statement中的記錄條數(shù)供炼。Fetch Size設(shè)的越大一屋,讀數(shù)據(jù)庫的次數(shù)越少窘疮,速度越快袋哼,F(xiàn)etch Size越小,讀數(shù)據(jù)庫的次數(shù)越多闸衫,速度越慢-->
<property name="jdbc.fetch_size">50 </property>
<!--jdbc.batch_size是指Hibernate批量插入,刪除和更新時每次操作的記錄數(shù)涛贯。Batch Size越大,批量操作的向數(shù)據(jù)庫發(fā)送Sql的次數(shù)越少蔚出,速度就越快弟翘,同樣耗用內(nèi)存就越大-->
<property name="jdbc.batch_size">23 </property>
<!--4,是否顯示sql:-->
<!--是否在后臺顯示Hibernate用到的SQL語句骄酗,開發(fā)時設(shè)置為true稀余,便于差錯,程序運行時可以在Eclipse的控制臺顯示Hibernate的執(zhí)行Sql語句趋翻。項目部署后可以設(shè)置為false睛琳,提高運行效率-->
<property name="hibernate.show_sql">true </property>
<!--
create: 先刪表,再建表踏烙。
create-drop: 啟動時建表师骗,退出前刪表。
update: 如果表結(jié)構(gòu)不一致讨惩,就創(chuàng)建或更新辟癌。
validate: 啟動時驗證表結(jié)構(gòu),如果不致就拋異常荐捻。
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 5,開啟二級緩存使用: -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<propertyname name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</propertyname><!-- 指定緩存產(chǎn)品所需的類 -->
<property name="hibernate.cache.use_query_cache">true</property><!-- 啟用查詢緩存 -->
<!--6黍少,指定映射文件寡夹,可映射多個映射文件-->
<mapping resource="org/mxg/UserInfo.hbm.xml">
</session-factory>
</hibernate-configuration>