Hibernate相關配置文件內容詳解

1.hibernate.cfg.xml核心配置文件

  1. 位置:類路徑(classpath、src)–>WEB-INF/classes
  2. 名稱:hibernate.cfg.xml
  3. 內容:
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- hibernate.connection.username : 連接數據庫的用戶名 -->
        <property name="hibernate.connection.username">root</property>
        <!-- hibernate.connection.password : 連接數據庫的密碼 -->
        <property name="hibernate.connection.password">123456</property>
        <!-- hibernate.connection.url : 連接數據庫的地址,路徑 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/h_day01_db</property>
        <!-- 數據庫方言配置 
         org.hibernate.dialect.MySQLDialect (選擇最短的)
         -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- show_sql: 操作數據庫時,會 向控制檯打印sql語句 -->
        <property name="show_sql">true</property>
        <!-- format_sql: 打印sql語句前,會將sql語句先格式化  -->
        <property name="format_sql">true</property>
        <!--
            hbm2ddl.auto: 生成表結構的策略配置 update(最常用的取值): 如果當前數據庫中不存在表結構,那麼自動創建表結構.
            如果存在表結構,並且表結構與實體一致,那麼不做修改 如果存在表結構,並且表結構與實體不一致,那麼會修改表結構.會保留原有列.
            create(很少):無論是否存在表結構.每次啓動Hibernate都會重新創建表結構.(數據會丟失) create-drop(極少):
            無論是否存在表結構.每次啓動Hibernate都會重新創建表結構.每次Hibernate運行結束時,刪除表結構.
            validate(很少):不會自動創建表結構.也不會自動維護表結構.Hibernate只校驗表結構. 如果表結構不一致將會拋出異常.
        -->
        <property name="hbm2ddl.auto">update</property>

        <!-- hibernate.connection.autocommit: 事務自動提交  -->
        <property name="hibernate.connection.autocommit">true</property>
        <!-- 將Session與線程綁定=> 只有配置了該配置,才能使用getCurrentSession -->
        <property name="hibernate.current_session_context_class">thread</property>
        <mapping resource="jxust/simon/domain/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

2.JavaBean + 映射文件

  1. 位置:javabean同包
  2. 名稱:javabean同名
  3. 擴展名:*.hbm.xml
  4. 內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- ORM元數據  表對象關係映射文件 
        package : 配置該配置文件中類所在的包.  -->
 <hibernate-mapping package="jxust.simon.domain" >
    <!-- class: 配置實體與表的關係
        name : 填寫實體的完整類名
        table: 與實體對應表的名稱
        dynamic-insert:動態插入 默認值是false
                        true=>如果字段值爲null,不參與insert語句
         dynamic-update:動態更新  默認值"false"
                        true=> 沒改動過的屬性,將不會生成到update語句中
     -->
    <class name="User" table="t_user"  >
        <!-- id: 配置實體與表中 id對應
            name: user對象中標識主鍵的屬性名稱
            column: 主鍵在表中的列名
            length: 列的數據長度
            unsaved-value(不常用): 指定主鍵爲什麼值時,當做null來處理.
            access(強烈推薦不要用):field 那麼在操作屬性時,會直接操作對應的字段而不是get/set方法
         -->
        <id name="id" column="id" length="255">
            <!-- generator:主鍵生成策略
                    1.increment  數據庫自己生成主鍵. 先從數據庫中查詢最大的ID值,將ID值加1作爲新的主鍵
                    2.identity  依賴於數據的主鍵自增功能
                    3.sequence  序列,依賴於數據中的序列功能(Oracle).
                    4.hilo(純瞭解,永遠用不到) : Hibernate自己實現序列的算法,自己生成主鍵. (hilo算法 )
                    5.native 自動根據數據庫判斷,三選一. identity|sequence|hilo
                    6.uuid  生成32位的不重複隨機字符串當做主鍵
                    7.assigned 自己指定主鍵值. 表的主鍵是自然主鍵時使用.

             -->
            <generator class="uuid"></generator>
        </id>   
        <!-- property : 實體中屬性與表中列的對應
             name : 實體中屬性名稱
             column : 表中列的名稱
             length : 數據長度
             precision: 小數點後的精度
             scale: 有效位數
             insert(一般不用): 該屬性是否加入insert語句.
             update(一般不用): 該屬性是否加入update語句.
             not-null : 指定屬性的約束是否使用 非空
             unique : 指定屬性的約束是否使用 唯一
         -->
         <!-- 
            type: 表達該屬性的類型
            可以用三種方式指定屬性
            java類型               數據庫類型指定            Hibernate類型指定
            java.lang.String    varchar             string
          -->
        <property name="name" column="name" update="true" type="string" ></property>
        <property name="password" column="password"></property>
    </class>
 </hibernate-mapping>

JavaBean

package jxust.simon.domain;

public class User {
    private int id;
    private String name;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章