我有一个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
基本上,这就是我想要的文件结构,知道它将来会随桌面增长。如果还有其他更有意义的东西,我全都耳朵。
如果有人能提供描述我需要的文档的链接,那就太棒了。我不是在找人为我编码,只需要指向正确的方向。
如果需要进一步澄清,请与我们联系。谢谢!
答案 0 :(得分:0)
Hibernate提供多租户,允许在多个模式或数据库之间动态切换。 Hibernate docs更详细地描述了它。可以找到一个更注重弹簧的例子here和here。