Hibernate配置總結

Hibernate.cfg.xml主配置文件配置:

1、配置數據庫的信息:包括數據庫方言、數據庫URL、數據庫驅動、用戶名、密碼

	<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
	<property name="connection.url">
		jdbc:oracle:thin:@localhost:1521:orcl
	</property>
	<property name="connection.driver_class">
		oracle.jdbc.driver.OracleDriver
	</property>
	<property name="connection.username">xxx</property>
	<property name="connection.password">xxx123</property>
2、其他配置:

      (1)是否顯示SQL語句:

                其中"show_sql"爲true表示顯示SQL語句,爲false表示不顯示SQL語句,"format_sql"爲true表示格式化顯示的SQL語句,爲         false表示不格式化顯示的SQL語句。

	<property name="show_sql">true</property>
	<property name="format_sql">true</property>
      (2)配置是否自動建表:

                其中可選的值有:

                      a、create:先刪除,再創建    

                      b、update:如果表不存在就創建,不一樣就更新,一樣就什麼都不做

                      c、create-drop:初始化時創建表,SessionFactory執行close()時刪除表

                      d、validate:驗證表結構是否一致,如果不一致,就拋異常

	<property name="hbm2ddl.auto">update</property>
      (3)配置事務隔離級別:

                1表示讀操作未提交,2表示讀操作已提交,4表示可重複讀,8表示可串行化

	<property name="connection.isolation">2</property>
      (4)數據庫連接池配置(c3p0):

	<!-- 使用c3p0連接池 配置連接池提供的供應商 -->
	<property name="connection.provider_class">
		org.hibernate.connection.C3P0ConnectionProvider
	</property>
	<!-- 在連接池中可用的數據庫連接最少數目 -->
	<property name="hibernate.c3p0.min_size">5</property>
	<!-- 在連接池中所有數據庫連接的最大數目 -->
	<property name="hibernate.c3p0.max_size">20</property>
	<!-- 設定數據庫連接的過期時間,以秒爲單位,
		   如果連接池中的某個數據庫連接處於空閒狀態超過了timeout時間,就會從連接池中清除	
	 -->
	<property name="hibernate.c3p0.timeout">120</property>
	<!-- 每3000秒檢查所有連接池中的空閒連接,以秒爲單位 -->
	<property name="hibernate.c3p0.idle_test_period">3000</property>
      (5)二級緩存配置:

                二級緩存默認是未打開的,所以要使用二級緩存,就要如下配置。第2-4行配置的是緩存的提供商,如果要使用更高級的緩存提供商,那麼可以查閱Hibernate文檔,並導入相應的包。第7行配置的是查詢緩存的開關,表示當使用hql語句進行查詢的時候,是否將查詢結果保存到二級緩存中。第10-11行配置的是指定要使用二級緩存的實體類,"read-only"表示只讀,如果既要讀也要寫的話,可以使用"read-write"。第14行配置的是集合緩存,表示當通過一個對象中的集合屬性找到另一個與之關聯的對象是,也要保存到二級緩存。

	<!-- 指定要使用的緩存的提供商,這也就打開了二級緩存 -->
	<property name="cache.provider_class">
		org.hibernate.cache.HashtableCacheProvider
	</property>
		
	<!-- 查詢緩存開關,true開啓使用查詢緩存-->
	<property name="cache.use_query_cache">true</property>
		
	<!-- 指定要使用二級緩存的實體類 -->
	<class-cache usage="read-only" class="edu.fjnu.l_hbm_second_cache.Department"/>
	<class-cache usage="read-only" class="edu.fjnu.l_hbm_second_cache.Employee"/>
		
	<!-- 集合緩存 -->
	<collection-cache usage="read-only" collection="edu.fjnu.l_hbm_second_cache.Department.employees"/>
		
      (6)導入映射文件:把所有實體類對應的*.hbm.xml文件都導入到主配置文件中,注意映射文件地址的書寫方式

	<mapping resource="edu/fjnu/domain/User.hbm.xml"/>



關聯關係映射文件配置:

1、一對多:

     name表示該實體類中關聯其他表的那個屬性名稱;table表示關聯的表名稱;inverse屬性默認爲false表示本方維護關聯關係,如果爲true表示本方不維護關聯關係。只是影響是否能設置外鍵列的值(設成有效值或是null值),對獲取信息沒有影響。cascade屬性默認爲none,表示不級聯,可設置爲:delete,save-update,all,none 。key元素中column表示本類關聯的那個表中的外鍵列。one-to-many 中的class表示本類關聯那個實體的類型,即類名。

	<set name="" table="" inverse="" cascade="">
		<key column=""></key>
		<one-to-many class=""/>
	</set>

2、多對一:

      name屬性表示本類存在的關聯的變量名;class屬性表示關聯的實體類型;column屬性表示外鍵列,引用了關聯對象的表的主鍵。

<many-to-one name="" class="" column=""></many-to-one>

3、多對多:

      table屬性表示中間表,填寫表名;key子元素中的column表示集合外鍵,引用當前表主鍵的那個外鍵;many-to-many中的class表示關聯的那個實體的類型,即類名,column表示中間表引用關聯表的的主鍵。

	<set name="" table="">
		<key column=""></key>
		<many-to-many class="" column=""></many-to-many>
	</set>

4、一對一(採用獨立外鍵):

有外鍵方:與多對已關係一致,加上unique="true"表示外鍵唯一性。

<many-to-one name="" class="" column="" unique="true"></many-to-one>
無外鍵方:property-ref屬性,寫的是對方映射中外鍵列對應的類屬性名。

<one-to-one name="" class="" property-ref=""></one-to-one>
5、一對一(一方主鍵作爲外鍵):

有外鍵方:主鍵生成策略一定爲foreign,參數property生成主鍵值時所根據的對象。constrained屬性設置爲true

	<id name="id" type="java.lang.Integer" column="id">
           <generator class="foreign">
           	<param name="property"></param>
           </generator>
	</id>
	
	<one-to-one ="" class="" constrained="true"></one-to-one>

無外鍵方:name表示本類中有關聯關係的屬性,class表示關聯關係的類型

	<one-to-one name="" class=""></one-to-one>




發佈了53 篇原創文章 · 獲贊 18 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章