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