2017-03-07 47 views
0

嵌入式數據庫(如H2)有一個功能,可以使用預定義的scrypt文件自動生成sql表格。使用預定義的scrypt文件自動生成sql表格

Bean的實例:

@Bean 
    public DataSource dataSource() { 
     EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); 
     return builder 
       .setType(EmbeddedDatabaseType.H2) 
       .addScript("embeddedDB.sql") 
       .build(); 
    } 

Scrypt文件的例子:

CREATE TABLE Users 
(
    id    INT(11)  NOT NULL AUTO_INCREMENT, 
    username   VARCHAR(50) NOT NULL, 
    email    VARCHAR(255) NOT NULL, 
    password   VARCHAR(255) NOT NULL, 
    first_name  VARCHAR(50) NOT NULL, 
    last_name   VARCHAR(50) NOT NULL, 
    photo    BLOB, 
    registration_date DATE   NOT NULL, 
    role    VARCHAR(50) NOT NULL, 
    PRIMARY KEY (id) 
); 

前段時間在網絡上看到了類似的解決方案來配置自動生成SQL表(Spring上下文開始時一個bean )在MySQL數據源的情況下。該解決方案不包括JPA/Hibernate。不幸的是,我找不到這個例子了...... 所以,我的問題是如何在Spring數據源的情況下實現Spring自動生成SQL表?

+0

我最終都在那裏我看到了解決方案[ http://stackoverflow.com/a/23036217/6776032](http://stackoverflow.com/a/23036217/6776032) – sva605

回答

0

屬性文件中春啓動

 datasource.ranking.hibernate.hbm2ddl.method=create 

創建將創建新表更新將離開桌子。該表將根據您的類模型 創建然後在您的配置類設置的實體管理器屬性

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws NamingException { 
    LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean(); 
    factoryBean.setDataSource(dataSource()); 
    factoryBean.setPackagesToScan(new String[] { "com.package" }); 
    factoryBean.setJpaVendorAdapter(jpaVendorAdapter()); 
    factoryBean.setJpaProperties(jpaProperties()); 
    return factoryBean; 

}

private Properties jpaProperties() { 
     Properties properties = new Properties(); 
     properties.put("hibernate.dialect", environment.getRequiredProperty("datasource.ranking.hibernate.dialect")); 
    properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("datasource.ranking.hibernate.hbm2ddl.method")); 
    properties.put("hibernate.show_sql", environment.getRequiredProperty("datasource.ranking.hibernate.show_sql")); 
    properties.put("hibernate.format_sql", environment.getRequiredProperty("datasource.ranking.hibernate.format_sql")); 
    /* if(StringUtils.isNotEmpty(environment.getRequiredProperty("datasource.ranking.defaultSchema"))){ 
     properties.put("hibernate.default_schema", environment.getRequiredProperty("datasource.ranking.defaultSchema")); 
    }*/ 
    return properties; 

}

+0

我知道,如何基於使用JPA的類模型生成表,但我一直在尋找沒有JPA的解決方案。 – sva605

+0

看看這個https://www.tutorialspoint.com/jdbc/jdbc-create-tables.htm –