hibernate配置文件hibernate.cfg.xml和.hbm.xml的詳細解釋

原文地址:http://blog.csdn.net/qiaqia609/article/details/9456489html

hibernate.cfg.xmljava

 

[html]  view plain copy
 在CODE上查看代碼片派生到個人代碼片
  1. -標準的XML文件的起始行,version='1.0'代表XML的版本,encoding='gb2312'代表XML文件的編碼方式-->     
  2.                 <?xml version='1.0' encoding='gb2312'?>     
  3. <!--代表解析本XML文件的DTD文檔位置,DTD是Document Type Definition 的縮寫,即文檔類型的定義,XML解析器使用DTD文檔來檢查XML文件的合法性。hibernate.sourceforge.net/hibernate-configuration-3.0dtd能夠在Hibernate3.1.3軟件包中的src\org\hibernate目錄中找到此文件-->     
  4. <!DOCTYPE hibernate-configuration PUBLIC     
  5.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     
  6.           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">     
  7.     <!--聲明Hibernate配置文件的開始-->          
  8.     <hibernate-configuration>     
  9.     <!--代表如下的配置是針對session-factory配置的,SessionFactory是Hibernate中的一個類,這個類主要負責保存HIbernate的配置信息,以及對Session的操做-->     
  10.       <session-factory>        
  11.       <!--配置數據庫的驅動程序,Hibernate在鏈接數據庫時,須要用到數據庫的驅動程序-->     
  12.           <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property>     
  13.       <!--設置數據庫的鏈接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服務器名稱,此處爲本機,    hibernate是數據庫名-->      
  14.             <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</property>  
  15.     <!--鏈接數據庫是用戶名-->     
  16.           <property name="hibernate.connection.username">root </property>     
  17.           <!--鏈接數據庫是密碼-->     
  18.           <property name="hibernate.connection.password">123456 </property>            
  19.           <!--數據庫鏈接池的大小-->     
  20.           <property name="hibernate.connection.pool.size">20 </property>            
  21.         <!--是否在後臺顯示Hibernate用到的SQL語句,開發時設置爲true,便於差錯,程序運行時能夠在Eclipse的控制檯顯示Hibernate的執行Sql語句。項目部署後能夠設置爲false,提升運行效率-->     
  22.         <property name="hibernate.show_sql">true </property>     
  23.         <!--jdbc.fetch_size是指Hibernate每次從數據庫中取出並放到JDBC的Statement中的記錄條數。Fetch Size設的越大,讀數據庫的次數越少,速度越快,Fetch Size越小,讀數據庫的次數越多,速度越慢-->     
  24.         <property name="jdbc.fetch_size">50 </property>     
  25.         <!--jdbc.batch_size是指Hibernate批量插入,刪除和更新時每次操做的記錄數。Batch Size越大,批量操做的向數據庫發送Sql的次數越少,速度就越快,一樣耗用內存就越大-->     
  26.         <property name="jdbc.batch_size">23 </property>     
  27.         <!--jdbc.use_scrollable_resultset是否容許Hibernate用JDBC的可滾動的結果集。對分頁的結果集。對分頁時的設置很是有幫助-->     
  28.         <property name="jdbc.use_scrollable_resultset">false </property>     
  29.         <!--connection.useUnicode鏈接數據庫時是否使用Unicode編碼-->     
  30.         <property name="Connection.useUnicode">true </property>     
  31.         <!--connection.characterEncoding鏈接數據庫時數據的傳輸字符集編碼方式,最好設置爲gbk,用gb2312有的字符不全-->     
  32.     <property name="connection.characterEncoding">gbk </property>          
  33.             
  34.         <!--hibernate.dialect 只是Hibernate使用的數據庫方言,就是要用Hibernate鏈接那種類型的數據庫服務器。-->     
  35.           <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </property>     
  36.         <!--指定映射文件爲「hibernate/ch1/UserInfo.hbm.xml」-->            
  37.           <mapping resource="org/mxg/UserInfo.hbm.xml">     
  38.   </session-factory>     
  39.   </hibernate-configuration>        
  40.       
  41.       
  42.       
  43.   <bean id="dataSource"      
  44.   class="org.apache.commons.dbcp.BasicDataSource"      
  45.   destroy-method="close">      
  46. //鏈接驅動        
  47.   <property name="driverClassName" value="${jdbc.driverClassName}" />      
  48. //鏈接url,        
  49. <property name="url" value="${jdbc.url}" />      
  50. //鏈接用戶名        
  51.   <property name="username" value="${jdbc.username}" />      
  52. //鏈接密碼        
  53.   <property name="password" value="${jdbc.password}" />      
  54. </bean>      
  55.       
  56. <bean id="hbSessionFactory"      
  57.   class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">      
  58.   <property name="dataSource" ref="dataSource" />      
  59.   <property name="configLocation">      
  60. //hibernate配置文件位置        
  61.   <value>WEB-INF/hibernate.cfg.xml </value>      
  62.   </property>      
  63.   <property name="configurationClass"      
  64.   value="org.hibernate.cfg.AnnotationConfiguration" />      
  65.   <property name="hibernateProperties">      
  66.   <props>      
  67.   //針對oracle數據庫的方言,特定的關係數據庫生成優化的SQL        
  68.     <prop key="hibernate.dialect">      
  69.     org.hibernate.dialect.OracleDialect        
  70.     </prop>      
  71.   //選擇HQL解析器的實現        
  72.     <prop key="hibernate.query.factory_class">      
  73.     org.hibernate.hql.ast.ASTQueryTranslatorFactory        
  74.     </prop>      
  75.     //是否在控制檯打印sql語句        
  76.     <prop key="hibernate.show_sql">true </prop>      
  77.     //在Hibernate系統參數中hibernate.use_outer_join被打開的狀況下,該參數用來容許使用outer join來載入此集合的數據。        
  78.     <prop key="hibernate.use_outer_join">true </prop>      
  79.   //默認打開,啓用cglib反射優化。cglib是用來在Hibernate中動態生成PO字節碼的,打開優化能夠加快字節碼構造的速度        
  80.   <prop key="hibernate.cglib.use_reflection_optimizer">true </prop>      
  81.   //輸出格式化後的sql,更方便查看        
  82.   <prop key="hibernate.format_sql">true </prop>      
  83.   //「useUnicode」和「characterEncoding」決定了它是否在客戶端和服務器端傳輸過程當中進行Encode,以及如何進行Encode        
  84.   <prop key="hibernate.connection.useUnicode">true </prop>      
  85.   //容許查詢緩存, 個別查詢仍然須要被設置爲可緩存的.        
  86.   <prop key="hibernate.cache.use_query_cache">false </prop>      
  87.   <prop key="hibernate.default_batch_fetch_size">16 </prop>      
  88.     //鏈接池的最大活動個數        
  89.     <prop key="hibernate.dbcp.maxActive">100 </prop>      
  90.   //當鏈接池中的鏈接已經被耗盡的時候,DBCP將怎樣處理(0 = 失敗,1 = 等待,2  =  增加)        
  91.     <prop key="hibernate.dbcp.whenExhaustedAction">1 </prop>      
  92.     //最大等待時間        
  93.     <prop key="hibernate.dbcp.maxWait">1200 </prop>      
  94.     //沒有人用鏈接的時候,最大閒置的鏈接個數        
  95.     <prop key="hibernate.dbcp.maxIdle">10 </prop>      
  96.     ##如下是對prepared statement的處理,同上。        
  97.     <prop key="hibernate.dbcp.ps.maxActive">100 </prop>      
  98.     <prop key="hibernate.dbcp.ps.whenExhaustedAction">1 </prop>      
  99.     <prop key="hibernate.dbcp.ps.maxWait">1200 </prop>      
  100.     <prop key="hibernate.dbcp.ps.maxIdle">10 </prop>      
  101.   </props>      
  102.   </property>      
  103. </bean>      

 

XXX.hbm.xmlmysql

 

[html]  view plain copy
 在CODE上查看代碼片派生到個人代碼片
  1. <?xml version="1.0"?>    
  2. <!DOCTYPE hibernate-mapping PUBLIC     
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    
  4.     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">    
  5.         
  6. <!--     
  7.     <hibernate-mapping>通常不去配置,採用默認便可。    
  8.     default-cascade="none":默認的級聯風格,表與表聯動。    
  9.     default-lazy="true":默認延遲加載    
  10.  -->    
  11. <hibernate-mapping>    
  12.     
  13.     <!--     
  14.         <class>:使用class元素定義一個持久化類。    
  15.         name="cn.javass.user.vo.UserModel":持久化類的java全限定名;    
  16.         table="tbl_user":對應數據庫表名;    
  17.         mutable="true":默認爲true,設置爲false時則不能夠被應用程序更新或刪除;    
  18.         dynamic-insert="false":默認爲false,動態修改那些有改變過的字段,而不用修改全部字段;    
  19.         dynamic-update="false":默認爲false,動態插入非空值字段;    
  20.         select-before-update="false":默認爲false,在修改以前先作一次查詢,與用戶的值進行對比,有變化都會真正更新;    
  21.         optimistic-lock="version":默認爲version(檢查version/timestamp字段),取值:all(檢查所有字段)、dirty(只檢查修改過的字段)、    
  22.                                    none(不使用樂觀鎖定),此參數主要用來處理併發,每條值都有固定且惟一的版本,版本爲最新時才能執行操做;    
  23.      -->    
  24.     <class name="cn.javass.user.vo.UserModel" table="tbl_user" dynamic-insert="true" dynamic-update="true" optimistic-lock="version">    
  25.             
  26.         <!--     
  27.             <id>:定義了該屬性到數據庫表主鍵字段的映射。    
  28.             name="userId":標識屬性的名字;    
  29.             column="userId":表主鍵字段的名字,若是不填寫與name同樣;    
  30.          -->    
  31.         <id name="userId">    
  32.             <!-- <generator>:指定主鍵由什麼生成,推薦使用uuid(隨機生成惟一通用的表示符,實體類的ID必須是String),  
  33.                                native(讓數據庫自動選擇用什麼生成(根據底層數據庫的能力選擇identity,sequence或hilo中的一種)),  
  34.                                assigned(指用戶手工填入,默認)。 -->    
  35.             <generator class="uuid"/>    
  36.         </id>    
  37.             
  38.         <!--     
  39.             <version/>:使用版本控制來處理併發,要開啓optimistic-lock="version"和dynamic-update="true"。    
  40.             name="version":持久化類的屬性名,column="version":指定持有版本號的字段名;    
  41.          -->    
  42.         <version name="version" column="version"/>    
  43.             
  44.         <!--     
  45.             <property>:爲類定義一個持久化的javaBean風格的屬性。    
  46.             name="name":標識屬性的名字,以小寫字母開頭;    
  47.             column="name":表主鍵字段的名字,若是不填寫與name同樣;    
  48.             update="true"/insert="true":默認爲true,表示能夠被更新或插入;    
  49.          -->    
  50.         <property name="name" column="name" />    
  51.         <property name="sex" column="sex"/>    
  52.         <property name="age" column="age"/>    
  53.             
  54.         <!--     
  55.             組件映射:把多個屬性打包在一塊兒當一個屬性使用,用來把類的粒度變小。    
  56.             <component name="屬性,這裏指對象">    
  57.                 <property name="name1"></property>    
  58.                 <property name="name2"></property>    
  59.             </component>    
  60.          -->    
  61.              
  62.          <!--     
  63.             <join>:一個對象映射多個表,該元素必須放在全部<property>以後。    
  64.             <join table="tbl_test:子表名">    
  65.                 <key column="uuid:子表主鍵"></key>    
  66.             <property name="name1:對象屬性" column="name:子表字段"></property>    
  67.          </join>    
  68.           -->    
  69.              
  70.     </class>    
  71.         
  72. </hibernate-mapping>    
相關文章
相關標籤/搜索