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語句爲:

java

相關文章
相關標籤/搜索