hibernate的映射配置文件

注:遇到一個屬性記錄一個屬性,好記性不如爛筆頭,以便以後查閱方便。採用的實體類 Customer

* 本文僅供參考查詢作用,需要配置哪個屬性查看對應屬性的含義。有的屬性有好幾個選擇值,還需比較之後選擇適合項目的值來使用。


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

<hibernate-mapping>
       <class name="it.bzc.pojo.Book" table="book" catalog="bzc">
		<id name="id" column="id" type="int">
			<generator class="identity"></generator>
		</id>
		<property name="name" column="name" type="string"></property>
		<property name="price" column="price"></property>
	</class>
</hibernate-mapping>

1.class
<class name="it.bzc.pojo.Book" table="book" catalog="bzc">
屬性:  name > PO持久類的路徑,注意後面沒有.java,前面包名之間用“.”隔開,不是"/",與hibernate.cfg.xml裏的mapping路徑書寫不一樣

              table >  該持久類對應數據庫中表格的名稱,數據庫中表示什麼名,這裏就是什麼名

              catalog > 這裏的bzc是數據庫的名稱,可根據實際功能替換數據庫名稱

注:在實際中,table屬性可以不寫,默認就是持久類的名稱,這裏是book;catalog也可以不寫,因爲在hibernate.cfg.xml中連接數據庫的配置裏已經配置過數據庫了。

2.id    /    property

<id name="id" column="id" type="int">
<property name="name" column="name" type="string"></property>
id和property放在一起說下,二者都是持久類當中的字段,只不過id是主鍵,用於標識每條記錄。讀者可理解爲都一樣,只是id因爲特殊,給了個特殊的名字;而其他字段都是property。

屬性: name > 持久類中屬性的名字

             column > 字面意思“欄”,數據庫表中對應持久類屬性的那一個字段,可以不寫,默認和屬性名一樣

             type >  java裏的屬性值到表中字段的映射時數據類型要統一,就是通過這個控制。type有三種類型,拿字符類型舉列子:

                               第一種:java類型     java.lang.String

                               第二種 :hibernate類型       string

                               第三種:sql類型        varchar(20)

注:sql類型的寫法要和前面兩種不一樣,這裏將

<property name="name" column="name" type="string"></property>
寫成sql類型的給大家看一下:

<property name="name">
	<column name="name" sql-type="varchar(20)"></column> 
</property>

當然   type 屬性也可以不設置,hibernate會自動進行類型轉換。

3.generator

<generator class="identity"></generator>

不知道大家有沒有注意到,id裏還有這個屬性的配置,在其他地方介紹這裏時總是大篇幅,個人可以簡單的理解爲:1.這是一個主鍵策略,用來生成主鍵用;2.當我需要配置主鍵的時候,只需要拷貝這行代碼,將裏面的class值改變即可;3.參考下方主鍵策略,選擇合適的主鍵策略即可。

     identity > mysql數據庫用這個,因爲mysql數據庫支持自增這個功能,而這個單詞的使用前提就是底層數據庫支持自增。

    sequence > oracle數據庫用這個,這個單詞使用前提是底層數據庫支持序列的使用,而oracle數據庫就支持。

    increment > 這個和底層數據庫無關了,是hibernate這個框架自身生成主鍵,每次遞增1,糾結主鍵策略時可直接用這個。

    native > 這個和上面那個increment有異曲同工之處,同樣不考慮底層數據庫是什麼,native會智能選擇,如果底層數據庫是mysql,nvtive 會自動替換成 identity ,當然oracle也同樣的道理,只不過這一切不需要你來選擇,hibernate幫助你克服你的強迫症。

* 暫時先介紹以上四個策略,能滿足大部分需求。

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