※程式設定
//SchemaExport export = new SchemaExport(HibernateUtil.getConfiguration()); SchemaExport export = new SchemaExport(new Configuration().configure()); export.create(true, false); export.drop(true, true); //SchemaUpdate update = new SchemaUpdate(new Configuration().configure()); //update.execute(true, true); //SchemaValidator validator = new SchemaValidator(new Configuration().configure()); //validator.validate();
※最上面是自己寫的HibernateUtil,第一行是官方寫的
※第一個參數表示要不要在控制台輸出DDL語句
※第二個參數表示要不要真的執行
※生成是根據hibernate.cfg.xml的mapping resource,當然用其他方式也行,反正給一個設定檔就對了
※第二區塊是根據mapping resource的hbm.xml,增加新的欄位,資料庫就會跟著增加
但我試的結果 改名和修改資料型態沒用
※第三區塊是根據mapping resource的hbm.xml,會檢查欄位和資料庫有沒有對應,如不對應就會出錯,如「org.hibernate.HibernateException: Wrong column type in 帳號.EMP for column COMM. Found: float, expected: double precision」,因為資料庫是float,我hbm設double,雖然還是能運行,但如果你要驗證,就是會報錯
※XML設定
<property name="hibernate.hbm2ddl.auto">create</property>
總共有四種值,看這裡的 Table 3.7
※create: 根據mapping resource,刪除表,然後新增表,所以永遠沒資料,類似上面的第一區塊的create方法,但控制台不會輸出DDL語句
※create-drop: 根據mapping resource,刪除表,然後新增表,但session factory關閉後又刪除,所以關閉後,連表都沒了,類似上面的第一區塊的drop方法,但控制台不會輸出DDL語句
※update:類似上面的第二區區,但還要有setter/getter方法,且控制台不會輸出DDL語句,聽說較常用
※validate:等同上面的第三區塊
沒有留言:
張貼留言