We are currently using Hibernate 3 and we use Hibernate Tools to generate SQL scripts for the DB schema.
We use the following Ant task
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);