hibernate配置


主配置文件
<?xml version="1.0" encoding="GBK"?> <!-- 指定Hibernate配置文件的DTD信息 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- hibernate- configuration是連接配置文件的根元素 --> <hibernate-configuration> <session-factory> <!-- 指定連接數據庫所用的驅動 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 指定連接數據庫的url,hibernate連接的數據庫名 --> <property name="connection.url">jdbc:mysql://localhost/數據庫名</property> <!-- 指定連接數據庫的用戶名 --> <property name="connection.username">root</property> <!-- 指定連接數據庫的密碼 --> <property name="connection.password">32147</property> <!-- 指定連接池里最大連接數 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定連接池里最小連接數 --> <property name="hibernate.c3p0.min_size">1</property> <!-- 指定連接池里連接的超時時長 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 指定連接池里最大緩存多少個Statement對象 --> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">true</property> <!-- 指定數據庫方言 --> <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- 根據需要自動創建數據表 --> <property name="hbm2ddl.auto">update</property> <!-- 顯示Hibernate持久化操作所生成的SQL --> <property name="show_sql">true</property> <!-- 將SQL腳本進行格式化后再輸出 --> <property name="hibernate.format_sql">true</property> <!-- 羅列所有的映射文件 --> <mapping resource="映射文件路徑/News.hbm.xml"/> </session-factory> </hibernate-configuration>

映射文件配置
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">    
<!-- 
    <hibernate-mapping>一般不去配置,采用默認即可。
    schema:指定映射數據庫的schema(模式/數據庫),如果指定該屬性,則表名會自動添加該schema前綴
    package:指定包前綴 指定持久化類所在的包名 這樣之后calss子元素中就不必使用全限定性的類名
    default-cascade="none":默認的級聯風格,表與表聯動。
    default-lazy="true":默認延遲加載
 -->
<hibernate-mapping>
    <!-- 
        <class>:使用class元素定義一個持久化類。
        name="cn.javass.user.vo.UserModel":持久化類的java全限定名;
        table="tbl_user":對應數據庫表名,默認持久化類名作為表名;
        proxy:指定一個接口,在延遲裝載時作為代理使用,也可在這里指定該類自己的名字。
        mutable="true":默認為true,設置為false時則不可以被應用程序更新或刪除,等價於所有<property>元素的update屬性為false,表示整個實例不能被更新。
        dynamic-insert="false":默認為false,動態修改那些有改變過的字段,而不用修改所有字段;
        dynamic-update="false":默認為false,動態插入非空值字段;
        select-before-update="false":默認為false,在修改之前先做一次查詢,與用戶的值進行對比,有變化都會真正更新;
        optimistic-lock="version":默認為version(檢查version/timestamp字段),取值:all(檢查全部字段)、dirty(只檢查修改過的字段);
                                   none(不使用樂觀鎖定),此參數主要用來處理並發,每條值都有固定且唯一的版本,版本為最新時才能執行操作;
        如果需要采用繼承映射,則class元素下還會增加<subclass.../>元素等用於定義子類。
     -->
    <class name="cn.javass.user.vo.UserModel" table="tbl_user" >
        
        <!-- 
            <id>:定義了該屬性到數據庫表主鍵字段的映射。
            type  指定該標識屬性的數據類型,該類型可以是Hibernate的內建類型,也可以是java類型,如果是java類型則需要使用全限定類名(帶包名)。該屬性可選,如果沒有指定類型, 則hibernate自行判斷該標識屬性數據類型。通常建議設定。
            name="userId":標識屬性的名字;
            column="userId":表主鍵字段的名字,如果不填寫與name一樣;
            
         -->
        <id name="userId">
            <!-- <generator>:指定主鍵由什么生成,推薦使用uuid,assigned指用戶手工填入。設定標識符生成器
            適應代理主鍵的有:
                increment:有Hibernat自動以遞增的方式生成標識符,每次增量1;
                identity:由底層數據庫生成標識符,前提條件是底層數據庫支持自動增長字段類型。(DB2,MYSQL)
                uuid:用128位的UUID算法生成字符串類型標識符。
            適應自然主鍵:
                assigned:由java程序負責生成標識符,為了能讓java應用程序設置OID,不能把setId()方法設置成private類型。
                讓應用程序在save()之前為對象分配一個標識符。相當於不指定<generator.../>元素時所采用的默認策略。
                應當盡量避免自然主鍵
            -->
            <generator class="uuid"/>
        </id>
        
        <!-- 
            <version/>:使用版本控制來處理並發,要開啟optimistic-lock="version"和dynamic-update="true"。
            name="version":持久化類的屬性名,column="version":指定持有版本號的字段名;
         -->
        <version name="version" column="version"/>
        
        <!-- 
            <property>:為類定義一個持久化的javaBean風格的屬性。
            name="name":標識屬性的名字,以小寫字母開頭;
            column="name":表主鍵字段的名字,如果不填寫與name一樣;
            update="true"/insert="true":默認為true,表示可以被更新或插入;
            access="property/field":指定Hibernate訪問持久化類屬性的方式。默認property。property表示使用setter/getter方式。field表示運用java反射機制直接訪問類的屬性。
            formula="{select。。。。。}":該屬性指定一個SLQ表達式,指定該屬性的值將根據表達式類計算,計算屬性沒有和它對應的數據列。
            formula屬性允許包含表達式:sum,average,max函數求值的結果。
            例如:formula="(select avg(p.price) from Product P)"
         -->
        <property name="name" column="name" />
        <property name="sex" column="sex"/>
        <property name="age" column="age"/>
        
        <!-- 
            組件映射:把多個屬性打包在一起當一個屬性使用,用來把類的粒度變小。
            <component name="屬性,這里指對象">
                 <property name="name1"></property>
                 <property name="name2"></property>
             </component>
         -->
         
         <!-- 
             <join>:一個對象映射多個表,該元素必須放在所有<property>之后。
             <join table="tbl_test:子表名">
                 <key column="uuid:子表主鍵"></key>
             <property name="name1:對象屬性" column="name:子表字段"></property>
         </join>
          -->
         
    </class>    
</hibernate-mapping>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM