在Spring Boot中,是否可以同时运行两个嵌入式数据库,并使用spring.jpa.generate-ddl来填充它们?

6 浏览
0 Comments

在Spring Boot中,是否可以同时运行两个嵌入式数据库,并使用spring.jpa.generate-ddl来填充它们?

我在我的应用程序中连接了两个数据库。

我想设置一个仅用于开发的配置文件,使用内嵌的H2数据库来模拟这些数据库,并希望通过使用spring.jpa.generate-ddl=true来自动创建它们的模式。每个数据库的实体类位于不同的Java包中,我希望这可能对我有所帮助。

使用Spring的自动配置机制可以实现这样的事情吗?

0
0 Comments

在Spring Boot中可以使用多个数据库,但是Spring Boot只能自动配置一个数据库。如果需要配置第二个数据库,需要自己进行配置。如果只需要一个JDBC连接,只需要配置数据源即可。如果需要使用JPA,还需要配置第二个JPA配置,使用第二个数据源。

具体代码如下:

@Configuration
public class SecondDataSourceConfig {
    @Primary
    @Bean(name = "secondDataSource")
    @ConfigurationProperties(prefix = "second.datasource")
    public DataSource secondDataSource() {
        return DataSourceBuilder
                .create()
                .driverClassName("org.h2.Driver")
                .build();
    }
    @Primary
    @Bean(name = "secondEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean secondEntityManagerFactory(EntityManagerFactoryBuilder builder,
                                                                              @Qualifier("secondDataSource") DataSource secondDataSource) {
        return builder.dataSource(secondDataSource)
                .packages("com.example.entity")
                .persistenceUnit("second")
                .build();
    }
    @Primary
    @Bean(name = "secondTransactionManager")
    public PlatformTransactionManager secondTransactionManager(
            @Qualifier("secondEntityManagerFactory") EntityManagerFactory secondEntityManagerFactory) {
        return new JpaTransactionManager(secondEntityManagerFactory);
    }
}

以上代码和更多信息可以在这篇文章中找到。

感谢Stefan的回答。我已经成功配置了第二个数据源。但是我的具体问题是如何从实体类中填充这些嵌入式数据库。我知道可以使用schema.sql来进行配置,但是我想从实体类中进行配置。

0