根據對映檔案自動建表
阿新 • • 發佈:2019-02-06
配置檔案中存放物件和表的對應關係,物件名對應著表名,物件的屬性對應著表的列
就是這樣的:
<!-- 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:驗證表結構是否一致,如果不一致就拋異常