2017-08-04 7 views
0

Ich möchte bei jeder HTTP-Anfrage eine Verbindung zur Datenbank herstellen (Bei jeder Anfrage erhalte ich Datenbankdetails vom Benutzer). Kann jemand vorschlagen, wie man es mit Spring-Boot-Starter macht -jpa.Dynamische Verbindung zur Datenbank in Java (Spring Boot)

Ich kann Eigenschaftendatei für Datenbankkonfigurationsdetails nicht verwenden. weil Details ich von HTTP-Anfrage dynamisch bekommen werde.

Ich benutze 2.0.0.M3 Spring-Boot-Version.

Antwort

0

Ich denke, es ist möglicherweise nicht richtig, Datenbank des Benutzers sofort zu verbinden. Ich schlage vor, ein Schnittstellenprogramm zu machen, um die dynamischen Daten in einer Datenbank zu sammeln. Sie können die Eigenschaften der Verbindungsparameter in Ihrem Code nicht ändern.

+0

ich habe nicht verstanden was du meinst ?? –

0

Sie müssen die Eigenschaftendatei des Spring Boot in einer Klasse mit @ConfigurationProperties Anotation laden.

Auch Sie müssen die Datenbankkonfiguration API innerhalb dieser Klasse aufrufen.

+0

können Sie den Arbeitscode angeben !!! –

2

Ich würde vorschlagen, dass Sie nativen JDBC-Code besser verwenden, um eine Verbindung mit der Datenbank herzustellen und eine Abfrage durchzuführen. Wenn Sie Spring-Daten jpa verwenden möchten, müssen Sie zur Laufzeit , EntityManagerFactory und JpaTransactionManager Bean erstellen.

+0

Projektanforderung ist die Verwendung von ORM. ich kann nicht mit nativem jdbc code gehen –

1

Wenn Datenbankdetails in jeder Benutzeranforderung angezeigt werden und Sie eine Datenbank bei jeder HTTP-Anforderung verbinden möchten, ist dies nicht zu bevorzugen, da Sie nicht einmal den Entity Manager beim Start der Anwendung ohne Datenbankinstanzierung haben. In dieser Situation müssten Sie jedoch all diese Dinge manuell verwalten. Sie müssen die Instanziierung und Initialisierung der Datenquelle, des Transaktionsmanagers, des Entitätsmanagers usw. manuell für jede Anforderung erstellen und diese mit dem Spring-IOC-Container registrieren. Nach Abschluss der Anforderung müssen Sie diese Instanzen manuell aus Spring IOC entfernen (die Registrierung aufheben). Sie können auch Interzeptoren dafür erstellen. Aber niemand sollte dies manuell verarbeiten, weil es so hektisch und komplexer ist und wir die Last dieser Instanziierung auf sich nehmen, um Bohnen selbst zu zerstören. Sogar der Frühling schafft es sehr gut, und wir machen Komplexität, indem wir selbst Verantwortung übernehmen.

+0

Dies ist die Projektanforderung gibt es eine alternative Möglichkeit, dies zu erreichen ?? –

+0

@Ankit Singh, aber dieser Prozess ist sehr kostspielig in Bezug auf Zeit und Ressourcen. Noch was ist mit Repositories wird es nicht zur Laufzeit erstellt und es wird Ausnahme auslösen und Anwendung wird nicht gestartet, ohne Entity-Manager (Spring Data Jap-Repositories erfordert es) –

+0

Ok danke. Also schlage ich vor, dass es nicht über ORM möglich ist (entweder über jpa oder andere) Wir müssen es tun mit Spring-jdbc –

Verwandte Themen