2017-04-11 112 views
0

我有一個包含大約15個數據庫(每個數據庫有5-20個表)的MySQL服務器。 (不是我的選擇,也不是我能夠改變的東西)春季啓動多個MySQL數據庫

我已經閱讀了幾個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

屬性只支持數據庫的單個實例,如果您需要多個實例,那麼您將不得不爲自己創建bean。結帳這個答案http://stackoverflow.com/a/30344608/5343269 – 11thdimension

回答

0

Hibernate提供多租戶,允許在多個模式或數據庫之間動態切換。 Hibernate docs更詳細地描述它。更具彈簧性的例子可以被發現,即herehere