generating ddl with hibernate, envers, and spring

So I have this Spring app that uses Hibernate and I’ve defined my model.  And I want to generate the DDL that I need to run to get the database in sync with my model.  I also want to get the DDL for tables needed for use with the Envers auditing framework. Here’s how you get all that:

@Autowired
LocalContainerEntityManagerFactoryBean lcemfb;

public void printUpdateScripts() {
Ejb3Configuration ejb3 = new Ejb3Configuration();
ejb3.configure(lcemfb.getPersistenceUnitInfo(),
lcemfb.getJpaPropertyMap());
Configuration config = ejb3.getHibernateConfiguration();
config.buildMappings();
AuditConfiguration.getFor(config); // include audit tables
Dialect dialect = Dialect.getDialect(config.getProperties());
DatabaseMetadata metadata;
Connection conn = null;
try {
EntityManager em = lcemfb.getObject().createEntityManager();
conn = ((HibernateEntityManager) em).getSession().connection();
metadata = new DatabaseMetadata(conn, dialect);
String[] scripts = config.generateSchemaUpdateScript(dialect,
metadata);
// String[] scripts = config.generateSchemaCreationScript(dialect);
// String[] scripts = config.generateDropSchemaScript(dialect);
for (String script : scripts) {
System.out.println(script);
}
} catch (Throwable t) {
t.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}

And LocalContainerEntityManagerFactoryBean is just your standard Spring FactoryBean for creating EntityManagerFactory instances.

<bean id="lcemfb" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="..." />
<property name="dataSource" ref="..." />
<property name="jpaVendorAdapter" ref="..." />
</bean>