hibernate筆記–實體類對映檔案”*.hbm.xml”詳解

冬至飲雪發表於2016-03-02

  實體類就是指普通的POJO,Hibernate並不知道那個實體類對應資料庫的哪一張表,所以還需要配置一下,常用的方式就是*.hbm.xml檔案[配置與@註解配置,這裡介紹前者的詳細屬性:

<?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">

<!-- package宣告pojo類所在的包,如果不寫那麼在class的name屬性裡需要指定包名全路徑 
    schema指資料庫模式,一個模式下可以有多張表
    -->
<hibernate-mapping package="com.wang.pojo">
    <!-- class指對映一下pojo類,提供了公共的無參構造方法,通過反射產生物件
            屬性用private修飾,並且生成get,set方法
            類不能用final來修飾,
            類需要指明標識  ,即id屬性
            name:表示pojo類名
            table:標識對應的資料庫表名 -->
    <class name="User" table="user">
    <!-- id:表示實體類的標識
        對應資料庫表中的主鍵
        name:是指實體類的標識屬性名
        column表示對應資料庫表的列名,如果不寫,則資料庫表中列名和屬性名一致
        length:標識資料庫表中對應資料型別的長度,如果不寫有預設長度
        type表示型別,如果不寫hibernate可以找到對應的pojo類的屬性的型別,可以寫成int,string,java.lang.Integer等等 -->
        <id name="id" column="id" >
            <!-- 主鍵生成策略 
            native:根據底層資料庫能力選擇identity,sequence,或者hilo中的一個
            
            -->
            <generator class="native"></generator>
        </id>
        <!-- 實體類屬性 -->
        <property name="name"/>    
        <property name="pwd"/>    
    </class>

</hibernate-mapping>
  • 主鍵對映

  實體類最好有一個主鍵列,並有get/set方法,主鍵最好使用可以為Null值的資料型別,比如Integer,Long,String,而不要使用int ,long等,因為如果主鍵為null,表示這個實體類還沒有儲存到資料庫,是一個臨時狀態(Transient),而int,long等基本資料型別沒有這個功能.

  主鍵生成規則:也成為主鍵生成策略,用的最多的就是native(自增長策略),

    native:自動方式,根據底層資料庫自動選擇.

在class標籤下,配置主鍵對映為:

<id name="id" column="id" >
    <generator class="native"></generator>
</id>
  • 普通屬性對映

  普通屬性就是除主鍵外,java基本資料型別的屬性,比如Integer(int),String,Date等,注意Integer預設為null,int預設為0.

  xml中使用<property />標籤配置普通屬性.type指定列型別,

  

日期屬性配置,與普通屬性配置相同,只是type中指定的是日期型別即可,取值可以有date,time,timestamp(簡寫方式)

       

  


相關文章