春季启动多个MySQL数据库

问题描述:

我有一个包含大约15个数据库(每个数据库有5-20个表)的MySQL服务器。 (不是我的选择,也不是我能够改变的东西)春季启动多个MySQL数据库

我已经阅读了几个*的帖子,baeldung等,这些都讨论多个数据源,但似乎意味着使用Postgres/MySQL或MySQL/H2。我正在寻找可扩展的MySQL解决方案,可以使用多个数据库。

我对Spring有些新鲜,但对Java不太熟悉,所以我可能会错过一些东西。这将是我的属性文件的一个例子。

application.properties

spring.datasource.database1.db.url=jdbc:mysql://localhost:3306/database1 
spring.datasource.database1.db.username=user 
spring.datasource.database1.db.password=password 
spring.datasource.database1.db.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.database1.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 
spring.datasource.database1.jpa.show-sql=true 
spring.datasource.database1.jpa.generate-ddl=true 
spring.datasource.database1.jpa.hibernate.ddl-auto=update 

spring.datasource.database2.db.url=jdbc:mysql://localhost:3306/database2 
spring.datasource.database2.db.username=user 
spring.datasource.database2.db.password=password 
spring.datasource.database2.db.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.database2.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 
spring.datasource.database2.jpa.show-sql=true 
spring.datasource.database2.jpa.generate-ddl=true 
spring.datasource.database2.jpa.hibernate.ddl-auto=update 

spring.datasource.database3.db.url=jdbc:mysql://localhost:3306/database3 
spring.datasource.database3.db.username=user 
spring.datasource.database3.db.password=password 
spring.datasource.database3.db.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.database3.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 
spring.datasource.database3.jpa.show-sql=true 
spring.datasource.database3.jpa.generate-ddl=true 
spring.datasource.database3.jpa.hibernate.ddl-auto=update 

我觉得性质的JPA部分是多余的,但是当我试图重新使用他们在配置文件中,它抱怨,不会编译。我不知道如何重用@ConfigurationProperties。

我的文件结构将包含每个数据库的文件夹,这又将有文件夹,每个模型,控制器,存储库等。例如:

Project │ pom.xml │ manifest.yml │ └───src └───main └───java | └───com | └───myorg | | Application.java | └───config | | | DatabaseConfig.java | | | └───databases | └───database1 | | | Database1Config.java | | └───models | | | | TableA.java | | | | TableB.java | | | | TableC.java | | | | | └───controllers | | | | TableAController.java | | | | TableBController.java | | | | TableCController.java | | | | | └───repositories | | | TableARepository.java | | | TableBRepository.java | | | TableCRepository.java | | | └───database2 | | Database2Config.java | └───models | | | TableD.java | | | TableE.java | | | TableF.java | | | └───controllers | | | TableEController.java | | | TableDController.java | | | TableFController.java | | | └───repositories | | TableDRepository.java | | TableERepository.java | | TableFRepository.java | └───resources | application.properties

从本质上讲,这是什么我希望拥有一个文件结构,知道它将来会随着桌子的增长而增长。如果还有其他更有意义的东西,我就会全神贯注。

如果任何人都可以提供一个描述我需要的文档的链接,那会很棒。我不想找人为我编码,只需要指出正确的方向即可。

如果需要更多说明,请让我知道。谢谢!

+1

属性只支持数据库的单个实例,如果您需要多个实例,那么您将不得不为自己创建bean。结帐这个答案http://*.com/a/30344608/5343269 – 11thdimension

Hibernate提供多租户,允许在多个模式或数据库之间动态切换。 Hibernate docs更详细地描述它。更具弹簧性的例子可以被发现,即herehere