Spring Boot多个MySQL数据库

时间:2017-04-11 15:53:20

标签: java spring spring-mvc spring-boot

我有一个MySQL服务器,包含大约15个数据库(每个数据库有5-20个表)。 (不是我的选择,也不是可以改变的东西)

我已经阅读了几个stackoverflow帖子,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 个答案:

答案 0 :(得分:0)

Hibernate提供多租户,允许在多个模式或数据库之间动态切换。 Hibernate docs更详细地描述了它。可以找到一个更注重弹簧的例子herehere