hibernate如何配置自動生成表


hibernate自動生成表有兩種方法:

1.直接寫代碼,通過方法來創建數據庫表。

2.通過 hibernate.cfg.xml配置標簽來創建數據表。

下面依次實現:

1.直接寫代碼,通過方法來創建數據庫表。

建立一個測試類,來測試是否能夠生成表。不過在執行該類之前,需要手動在數據庫中建立相應的數據庫,數據庫的名稱需要和配置文件保持一致。hibernate只會自動建表,不會自動建庫。

代碼如下:
package org.test.demo;

import java.util.EnumSet;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.schema.TargetType;

public class ExportDB {

    public static void main(String[] args){  
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
           Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
          
        //工具類  
        SchemaExport export=new SchemaExport();  
        //打到控制台,輸出到數據庫  
        //第一個參數 輸出DDL到控制台
        //第二個參數 執行DDL語言創建表
        export.create(EnumSet.of(TargetType.DATABASE), metadata);
    }  

}

運行后控制台輸出為建表語句:


數據庫執行sql語句為:


2.通過 hibernate.cfg.xml配置標簽來創建數據表。

只需要在hibernate.cfg.xml里加上如下代碼:

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

首次創建項目時用,項目穩定后一般注釋這里有4個值:

update:表示自動根據model對象來更新表結構,啟動hibernate時會自動檢查數據庫,如果缺少表,則自動建表;如果表里缺少列,則自動添加列。

還有其他的參數:

create:啟動hibernate時,自動刪除原來的表,新建所有的表,所以每次啟動后的以前數據都會丟失。

create-drop:啟動hibernate時,自動創建表,程序關閉時,自動把相應的表都刪除。所以程序結束時,表和數據也不會再存在。

validate :每次加載hibernate時,驗證創建數據庫表結構,只會和數據庫中的表進行比較,不會創建新表,但是會插入新值。

要注意的是:數據庫要預先建立好,因為hibernate只會建表,不會建庫!

測試insert()方法后控制台輸出如下:

先建表,再執行sql語句

數據庫執行sql語句為:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM