1

Ich habe einige Dokumentation über die Verbindung zu mehr als einer Datenbank/Datenquelle über JPA gesehen, aber das ist nicht, was ich genau machen möchte. Ich möchte einen Datenbankanbieter für die Entwicklung und einen völlig anderen Datenbankanbieter für die Produktion (und wahrscheinlich QA) verwenden. Diese Frage gilt auch für die Unterstützung verschiedener Produktionsumgebungen mit unterschiedlichen Datenbankanbietern (z. B. DB2 für Client 1, Oracle für Client 2, MySQL für Client 3 usw.).Verwenden verschiedener Datenbankanbieter für die Entwicklung vs Produktion mit JPA

In meinem Fall würde Ich mag folgendes tun:

  • Verwendung JPA mit Apache Derby für Entwicklungszwecke
  • Verwendung JPA mit IBM DB2 für Produktionszwecke

Wir tun nicht Verwenden Sie Spring :(

Mit MyBatis konnte ich einfach XML-Mappings für jede Datenbank, die ich unterstützen wollte, bereitstellen und alle Ergebnisse wieder denselben Entitäten/POJOs zuordnen.

Bis jetzt scheint mir, dass JPA alles bis zu vielleicht der Service-Schicht erfordert (mit Entitäten, DAO, sql alles benutzerdefinierte pro Datenbank).

Ich möchte wissen, wie Sie Ihre Anwendung für die Verwendung von Derby für die Entwicklung und DB2 für die Produktion einrichten würden. Kann ich mit der Verwendung der gleichen Entitäten für beide auskommen, sollte ich die DAO Ebene in separate Projekte trennen, kann ich eine persistence.xml, etc. verwenden?

Bitte lassen Sie wissen, welchen Ansatz Sie vorschlagen würden, um dies unterzubringen.

+0

und Sie können XML-Mappings für jede Datenbank auch in JPA bereitstellen; Sie verwenden KEINE Anmerkungen, wenn Sie ein anderes Schema in verschiedenen Datenspeichern verwenden müssen –

Antwort

0

Dies ist ein ziemlich häufiges Szenario, Sie müssen nichts duplizieren, wenn Sie JPA richtig verwenden. Sie können dieselben @Entity Klassen und DAOs verwenden.

Wenn Sie Maven verwenden, können Sie die für einige Maven-Profile spezifischen Verbindungseinstellungen vornehmen, z. Erstellen Sie ein Profil für jede Umgebung und lassen Sie dann Maven Resource Filtering Eigenschaften in Ihrer persistence.xml Datei ausfüllen (siehe this answer).