You can directly use the SchemaExport class to generate the DDL script :
For Hibernate 4 :
Configuration config = new Configuration();
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
properties.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/Test");
properties.put("hibernate.connection.username", "username");
properties.put("hibernate.connection.password", "password");
properties.put("hibernate.connection.driver_class", "org.postgresql.Driver");
properties.put("hibernate.show_sql", "true");
config.setProperties(properties);
config.addAnnotatedClass(MyMappedPojo1.class);
config.addAnnotatedClass(MyMappedPojo2.class);
..................
SchemaExport schemaExport = new SchemaExport(config);
schemaExport.setDelimiter(";");
/**Just dump the schema SQLs to the console , but not execute them ***/
schemaExport.create(true, false);
Update for Hibernate 5 :
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
properties.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/Test");
properties.put("hibernate.connection.username", "username");
properties.put("hibernate.connection.password", "password");
properties.put("hibernate.connection.driver_class", "org.postgresql.Driver");
properties.put("hibernate.show_sql", "true");
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(properties).build();
MetadataSources metadataSource = new MetadataSources(serviceRegistry);
metadataSource.addAnnotatedClass(MyMappedPojo1.class);
metadataSource.addAnnotatedClass(MyMappedPojo2.class);
...........
Metadata meta = metadataSource.buildMetadata();
SchemaExport schemaExport = new SchemaExport();
schemaExport.setDelimiter(";");
schemaExport.execute(EnumSet.of(TargetType.STDOUT), Action.CREATE, meta);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…