首页 > 解决方案 > 在 Web servlet 应用程序中使用二进制数据初始化数据库

问题描述

我有下一个使用 ddl 和 dml 的工作代码。它初始化嵌入式 H2 数据库。

    @Bean
    public DataSource dataSource(@Value("${jdbc.driver}") String driver,
                             @Value("${jdbc.url}") String url,
                             @Value("${jdbc.user}") String user,
                             @Value("${jdbc.password}") String password) {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(driver);
    dataSource.setUrl(url);
    dataSource.setUsername(user);
    dataSource.setPassword(password);

    Resource initSchema = new ClassPathResource("schema.sql");
    Resource initData = new ClassPathResource("data.sql");
    DatabasePopulator databasePopulator = new ResourceDatabasePopulator(initSchema, initData);
    DatabasePopulatorUtils.execute(databasePopulator, dataSource);

    return dataSource;
}
    @Bean
    public EntityManagerFactory entityManagerFactory(DataSource dataSource) {
    HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
    jpaVendorAdapter.setGenerateDdl(false);
    jpaVendorAdapter.setShowSql(true);

    LocalContainerEntityManagerFactoryBean entityManagerFactory =
            new LocalContainerEntityManagerFactoryBean();
    entityManagerFactory.setDataSource(dataSource);
    entityManagerFactory.setJpaVendorAdapter(jpaVendorAdapter);
    entityManagerFactory.setPackagesToScan("org.doit.model");
    entityManagerFactory.afterPropertiesSet();
    return entityManagerFactory.getObject();
}

@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(entityManagerFactory);
    return transactionManager;
}

请给我建议,如何在数据库中插入二进制数据,例如位于资源文件夹中的 zip 文件。我知道在单元测试中我们可以使用注释@Before,这让我们有机会做你想做的事。但是,当您使用 java config 启动您的应用程序时,该怎么做呢?

标签: javaspringdatabaseh2spring-framework-beans

解决方案


我也面临同样的问题。 这个答案对我有用。你可以试试,我想这对你有用。


推荐阅读