1. 程式人生 > >根據對映檔案自動建表

根據對映檔案自動建表


配置檔案中存放物件和表的對應關係,物件名對應著表名,物件的屬性對應著表的列

就是這樣的:

<!-- name:類名     table:對應的表名,如果不寫,預設的表名就是類的簡單名稱 -->
	<class name="User" table="t_user">
		<id name="id" type="int" column="id">
            <generator class="native"/>
		</id>
		<!-- 普通屬性:資料庫中基本型別:日期、字串、數字 -->
		<!-- name屬性:物件中的屬性必須要有
			type屬性:型別,如果不寫,Hibernate屬性會自動檢測
			column屬性:對應表中的列名,如果不寫,預設為屬性名
			length屬性:長度,不是所有的型別都有長度屬性,varchar有,int沒有,如果不寫,預設為255
			not-null屬性:非空約束,預設為false
			 -->
		<property name="name" type="string" column="name" length="20" not-null="true"/>
		<property name="birthday" type="date" column="birthday_"/>
		<property name="age" type="int" column="age"/>
		
		<!-- 當列表與關鍵字衝突時,可以通過column屬性制定一個其他的列名
		或是使用反引號包圍起來
		指定使用text型別時,最好再指定length,以確定生成的SQL型別是能夠存放指定數量的資料 -->
		<property name="desc" type="text" column="desc_"></property>
		
		<!-- 頭像,二進位制型別,最好指定長度 -->
		<property name="photo" type="binary" length="102400"></property>
	</class>
	

所以配置檔案中有表中的所有資訊,可以由對映檔案直接建立表。

在xml中加上語句:

<property name="hbm2ddl.auto">update</property>

(ddl 資料定義語言,只表結構的建立,表結構的刪除)

注意:

create:先刪除,再建立,如果已經存在這個表,會先把表刪了重新建立表,舊的的資料都沒有了

update:如果表不存在就建立,不一樣就更新,一樣就什麼都不做,主要用於測試

create-drop:初始化時建立表,SessionFactory執行close()時刪除表

validate:驗證表結構是否一致,如果不一致就拋異常