我现在想知道,如果架构不存在,是否有可能在hibernate中创建数据库架构,否则更新架构 如果它已经存在并且hbm文件中有一些修改,并且属性为hibernate.hbm2ddl.auto。
根据我的理解 创建值将始终删除先前的架构并创建新架构? 更新值不会创建新架构,如果存在基于hbm.xml的情况,它将只更新架构。 从右吗
我的方案是本地架构,而不是生产架构。
答案 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);
}
注意:它无法处理重命名/更改的字段,您需要注意这一点。但它可以处理新的领域。未映射的字段将被忽略。