初始化和填充数据库

时间:2014-08-11 14:44:44

标签: spring tomcat spring-data derby spring-boot

今天我已经开始使用Spring Boot了,我想用Embedded Derby创建Restfull服务(完成Tomcat嵌入式)。如何管理自动配置的数据库以及如何填充数据库?

2 个答案:

答案 0 :(得分:2)

使用EmbeddedDatabaseDataSource的子接口)作为dataSource bean。您可以使用EmbeddedDatabaseBuilder作为便利类来帮助构建bean。您可以使用构建器添加sql脚本,以及设置EmbeddedDatabaseType类似

的内容
@Configuration
public class AppConfig {
    @Bean
    public EmbdeddedDataBase dataSource() {
        return new EmbeddedDataBaseBuilder()
                   .addScripts("...", "...")
                   .setType(EmbeddedDataBaseType.DERBY).
                   .build();
    }
}

EmbeddedBataBase和其他提到的类都在spring jdbc jar中。还要确保你有德比罐。

答案 1 :(得分:-1)

我有以下代码,所以它很糟糕(我的意思是主类配置):

@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableJpaRepositories
public class Application {

private static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public static final String JDBC_URL = "jdbc:derby:db;create=true";


public static void main(String[] args) throws ClassNotFoundException, SQLException {
    Class.forName(DRIVER);
    Connection connection = DriverManager.getConnection(JDBC_URL);

    connection.createStatement().execute("create table users(id integer, name varchar(20), surname varchar(20))");

    connection.createStatement().execute("insert into users values " + 
                                        "(1, 'aaaaaaaa', 'werwer'), " + 
                                        "(2, 'aaaa', 'werdfdfdfwer'), " + 
                                        "(3, 'aa', 'dfdfwerwer')");

    System.out.println("channels table created and recordes successfully inserted...");





    ApplicationContext ctx = SpringApplication.run(Application.class, args);

    System.out.println("Let's inspect the beans provided by Spring Boot:");

    String[] beanNames = ctx.getBeanDefinitionNames();
    Arrays.sort(beanNames);
    for (String beanName : beanNames) {
        System.out.println(beanName);
    }
}

}