2017-04-11 7 views
0

Ich habe einen MySQL-Server, der etwa 15 Datenbanken enthält (jede Datenbank hat zwischen 5-20 Tabellen). (Nicht meine Wahl und nicht etwas, das geändert werden kann)Spring Boot Mehrere MySQL-Datenbanken

Ich habe mehrere Stackoverflow-Beiträge gelesen, Baeldung, usw., die alle über mehrere Datenquellen sprechen, aber scheinen, Postgres/MySQL oder MySQL/H2 zu verwenden. Ich bin auf der Suche nach einer skalierbaren Lösung für MySQL, die den Einsatz mehrerer Datenbanken ermöglicht.

Ich bin etwas neu zu Frühling, aber nicht zu Java, also kann ich gerade etwas vermissen. Dies wäre ein Beispiel für meine Eigenschaftendatei.

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 

Ich glaube, dass der JPA Teil der Eigenschaften redundant ist, aber wenn ich versuchte, sie in der Konfigurationsdatei wieder zu verwenden, es beschwert und würde nicht kompilieren. Ich bin mir nicht sicher, wie ich die @ConfigurationProperties wiederverwenden kann.

Meine Dateistruktur einen Ordner für jede Datenbank enthalten würde, was wiederum Ordner für jedes der Modelle, Controller, Repositories, etc. Zum Beispiel haben würde:

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

Im Wesentlichen ist es das, was Ich hätte gerne eine Dateistruktur, in der ich weiß, dass sie in Zukunft mit Tabellen wachsen wird. Wenn es noch etwas Sinnvolleres gibt, bin ich ganz Ohr.

Wenn jemand einen Link zu Dokumentation, die beschreibt, was ich brauche, wäre das großartig. Ich suche nicht jemanden, der für mich kodiert, sondern muss nur in die richtige Richtung zeigen.

Bitte lassen Sie mich wissen, wenn mehr Klärung benötigt wird. Vielen Dank!

+1

Eigenschaften unterstützen nur einzelne Instanzen der Datenbank. Wenn Sie mehrere Instanzen benötigen, müssen Sie für sie selbst Beans erstellen. Überprüfen Sie diese Antwort http://stackoverflow.com/a/30344608/5343269 – 11thdimension

Antwort

0

Hibernate bietet eine Mandantenfähigkeit, die den dynamischen Wechsel zwischen mehreren Schemas oder Datenbanken ermöglicht. Die Hibernate docs beschreiben es genauer. Ein eher federorientiertes Beispiel kann gefunden werden here und here.