hibernate.hbm2ddl.auto这两个操作值,即在数据库模式上创建/更新?

时间:2012-01-16 06:29:52

标签: java hibernate

我现在想知道,如果架构不存在,是否有可能在hibernate中创建数据库架构,否则更新架构 如果它已经存在并且hbm文件中有一些修改,并且属性为hibernate.hbm2ddl.auto。

根据我的理解 创建值将始终删除先前的架构并创建新架构? 更新值不会创建新架构,如果存在基于hbm.xml的情况,它将只更新架构。 从右吗

我的方案是本地架构,而不是生产架构。

2 个答案:

答案 0 :(得分:1)

update的{​​{1}}值确实会创建新架构(如果不存在)。

答案 1 :(得分:0)

您不需要使用SchemaExport,您只需使用SchemaUpdate即可。它很好用,如果你愿意,你可以在选择提交之前查看sql。

您需要自己创建数据库,或者使用一些jdbc。然后:

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;

public static void updateDb(Configuration cfg, boolean printSqlToConsole, boolean commit)
{
    SchemaUpdate u = new SchemaUpdate(cfg);
    u.setFormat(printSqlToConsole);
    u.execute(printSqlToConsole, commit);
}

注意:它无法处理重命名/更改的字段,您需要注意这一点。但它可以处理新的领域。未映射的字段将被忽略。