Jak programově vygenerovat pomocí hbm2ddl DB schéma

publikováno: 11.5.2013

Pokud používáte Spring a Hibernate (pomocí JPA), pak můžete vygenerovat databázové schéma pomocí třídy SchemaExport následovně:

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:db-dev.xml")
public class SchemaExportTest {
@Autowired
private LocalContainerEntityManagerFactoryBean entityManagerFactory;
@SuppressWarnings("deprecation")
@Test
public void exportDatabaseSchema() {
PersistenceUnitInfo persistenceUnitInfo
= entityManagerFactory.getPersistenceUnitInfo();
Map<String, Object> jpaPropertyMap
= entityManagerFactory.getJpaPropertyMap(); Configuration configuration = new Ejb3Configuration()
.configure(persistenceUnitInfo, jpaPropertyMap)
.getHibernateConfiguration(); SchemaExport schema = new SchemaExport(configuration);
schema.setOutputFile("gen-schema.sql");
schema.create(false, false);
}
}

Poznámka 1: Konfigurace připojení do databáze je v souboru db-dev.xml, který je v classpath a používá se v něm třída LocalContainerEntityManagerFactoryBean.

Poznámka 2: Výsledný script se uloží do domovského adresáře projektu do souboru gen-schema.sql

Poznámka 3: Tento kód funguje pro Hibernate do verze 5 (která v době psaní tohoto článku doposud nevyšla. V této verzi Hibernate už nebude třída Ejb3Configuration, která se v tomto příkladě používá)

Reference

Velmi se mi líbila přátelská a neformální atmosféra a viditelné nadšení a zapojení přednášejícího do problematiky a tudíž skutečně zajímavé příklady z praxe a možnost zeptat se prakticky na jakoukoliv

Ondřej

Školenie a celkovo prístup školitela hodnotím veĺmi kladne. Celé školenie bolo priposobené znalostiam skupiny (v našej skupine sa preskočili úplne základy a riešili sa konkrétne rozšírujúce znalostí). Školenie neprebiehalo odrozpravaním

Martin

Školení se mi moc líbilo, použití novinek v javě na konkrétních případech použití a vždy srozumitelně vysvětleno. Školitel má převyšující kvalifikaci a dokáže informace správnou formou předávat dál. Moc se

Robin


Novinky

26.9.2017: RebelLabs Developer Productivity Report 2017
Další rok, další RebelLabs report :-)

14.9.2017: Java release cycle zrychluje & Java Flight Recorder zdarma
Dlouhé mnohaleté prodlevy mezi jednotlivými major releasy v Javě končí!

14.9.2017: Java EE se stěhuje do nadace Eclipse Foundation
Co to znamená?