舊版代碼
Configuration cfg = new Configuration().configure();
SchemaExport se = new SchemaExport(cfg);
se.create(true, true);
新版(Hibernate 5.2+)API
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.configure() // 默認讀取 hibernate.cfg.xml
.build();
MetadataImplementor metadata = (MetadataImplementor) new MetadataSources(serviceRegistry)
.buildMetadata();
new SchemaExport()
.create(EnumSet.of(TargetType.DATABASE), metadata);
關鍵變化
- 配置構建分離為
ServiceRegistry + Metadata。
SchemaExport.create 參數改為 EnumSet<TargetType>(DATABASE、SCRIPT、STDOUT)和 Metadata。
- 支持更細粒度控制(如僅導出腳本
TargetType.SCRIPT)。
常見用法
// 僅生成 DDL 腳本到文件
new SchemaExport()
.setOutputFile("schema.sql")
.create(EnumSet.of(TargetType.SCRIPT), metadata);