2 Stimmen

Ist es möglich, JDBC als Abstraktionsschicht für RDBMS zu verwenden?

JDBC bietet eine API, die für die Verbindung zu verschiedenen RDBMS oder ähnlichen Datenspeichern verwendet werden kann. Die Datenspeicher unterscheiden sich jedoch in der Implementierung (z. B. SQL-Dialekte).

Ist es möglich, JDBC so zu verwenden, dass meine Abfragen und Anweisungen auf den meisten gängigen RDBMS (z.B.: Oracle, PostgreSQL, SQL Server, MySQL) funktionieren?

Diese Frage ist für mich in zweierlei Hinsicht interessant: * Allgemeines SQL (INSERT, UPDATE, SELECT usw.) * Zugriff auf Metadaten (Abrufen von Informationen über Tabellen und Spalten)

Ich experimentiere derzeit mit einem selbst geschriebenen Persistenz-Framework und möchte einen JDBC-Datenspeicher darunter anschließen. Wenn ich also einen JDBC-Datenspeicher-Adapter schreibe, wäre es schön, wenn er mit den meisten gängigen RDBMS funktionieren würde.

Vielen Dank im Voraus

5voto

Axel Fontaine Punkte 32617

JDBC es eine Abstraktionsschicht für RDBMS.

Leider, wie Sie bereits in Ihrer Frage erkannt haben, die Abstraktion ist undicht .

Wenn Sie sich an die kleine Teilmenge von SQL und Metadaten halten, die allen RDBMS gemeinsam ist, werden Sie keine Probleme haben. In der Realität ist es jedoch sehr wahrscheinlich, dass Sie schnell herauswachsen diese Grenzen.

2voto

a_horse_with_no_name Punkte 489934

Nein, das ist nicht möglich, weil sie zwei völlig unterschiedlichen Zwecken dienen.

JDBC ist eine Abstraktion des DBMS Kommunikationsprotokoll , während SQL eine Abfragesprache ist.

Die in SQL geschriebenen Abfragen werden über dieses Kommunikationsprotokoll an den Server gesendet, und die Ergebnisse der Abfragen werden dann über dieses Protokoll zurückgegeben (auf eine DBMS-unabhängige Weise).

Die Grenze zwischen dem Kommunikationsprotokoll und den Abfragen scheint fließend zu sein, da die JDBC-API auch Aufrufe zum Abrufen von Metadaten vom Server (oder vom Ergebnis) vorsieht. Aber eigentlich steht es dem Treiber frei, jedes Transportmittel zu verwenden, das er für geeignet hält. Das muss nicht unbedingt eine SQL-Abfrage sein.

1voto

Michael Borgwardt Punkte 334642

JDBC funktioniert als Abstraktion eines RDBMS in etwa so wie SQL: Grundlegende Abfragen sind kompatibel genug, aber man stößt immer wieder auf Anforderungen, die nur mit herstellerspezifischen Funktionen umgesetzt werden können:

  • Autoinkrementierende Spalten
  • ausrufen
  • Internationalisierung
  • usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X