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

相关文章
相关标签/搜索