Hibernate 5.x版本中SchemaExport的用法

Hibernate 5.x的版本中,SchemaExport的用法不同于以前的版本,而网上的诸多资料都还停留在以前的3.x, 4.x的API中,这里我简单说一下5.x版本中SchemaExport的用法。分别在5.0.1.Final版本、及5.1.0.Final版本中亲测有效。

一、5.0.1.Final

这个版本中的SchemaExport的API相对较复杂。参考如下:

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();

MetadataImplementor metadataImplementor = (MetadataImplementor)
new MetadataSources(serviceRegistry).buildMetadata();

SchemaExport export = new SchemaExport(serviceRegistry, metadataImplementor);
export.create(true, true);

PS:上述代码片段,是本人之前在知乎中的回答,应该不算侵权。如下:
https://www.zhihu.com/question/35168658

二、5.1.0.Final

知乎上有童鞋反应上述代码片段不能正常使用,本人特意去看了一下最新的5.1.0.Final的版本,发现SchemaExport的API又改了。@_@改得真频繁。
新版本的API使用参考如下:

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
SchemaExport schemaExport = new SchemaExport();
schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);

也就是说,create的时候,通过TargetType类型的一个EnumSet,来控制SQL语句的去处。TargetType是一个枚举类型,定义如下:

public enum TargetType {
    /** * Export to the database. */
    DATABASE,
    /** * Write to a script file. */
    SCRIPT,
    /** * Write to {@link System#out} */
    STDOUT;
}

你可能感兴趣的:(Hibernate,schema,Export)