Library zum Generieren von SQL-Statements

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo!

Ich suche eine Java-Library, die einen auf eine Datenbank angepassten SQL-String generiert. D.h. heißt es sollte Methoden wie addWhereClause(...), addLeftJoin(...) geben, mit denen man das SQL-Statement aufbauen kann. Weiters sollte man noch die Datenbank, für die das SQL Statement generiert werden soll, angeben können.

Kennt jemand eventuell so eine Library?
 
T

tuxedo

Gast
Ich glaub fast nicht dass es sowas gibt. Damit wäre man sicher auch etwas eingeschränkt was die flexibilität und komplexität von Statements betrifft.

Ich nehme an du willst mit so einer Lib die unterschiedlichen SQL-Dialekte und Eigenheiten auf einen gemeinsamen Nenner bringen?
Ich stell jetzt einfach mal so in den Raum, dass die Unterschiede in den einzelnen Sprachfeatures einer DB zu unterschiedlich sind um sowas zu realisisieren. Denn sonst gäbe es vermutlich auch schon einen "universellen" JDBC Treiber der mit allen Datenbanken kann und den man mit einem vereinheitlichenten SQL-Dialekt füttert.

- Alex
 
M

maki

Gast
Hibernate generiert SQL passend zur DB, kannst die SQL Statements aber nicht direkt verwenden, das macht Hibernate intern.

Heutzutage sollte man sowieso kein JDBC mehr verwenden wenn man Anwendungen neu entwickelt, viel zu "low level".
ORM Framework wie eben Hibernate sind da viel besser, der Standard dazu ist JPA.
 
G

Guest

Gast
Hallo!

Erstmal vielen Dank für die Antworten. Wir verwenden grundsätzlich JDO als OR-Mapper (ist ein älteres Projekt). Das Problem ist aber, daß wir für bestimmte Auswertungen sehr komplexe SQL-Statements brauchen, wo wir mit den JDO-Mitteln nicht mehr weiterkommen. Deshalb würden wir in diesen Fällen ein SQL-Statement über ein JDODirectSqlQuery absetzen.

Allerdings bleibt eben das Problem mit dem (DB unabhängigen) Zusammenbau des Statements.
 
M

maki

Gast
Welche Version von JDO?

JDO2.0 soll der JPA in vielen Bereichen überlegen sein.

Ansonmmsten stimme ich dir zu, die DB Unabhängigkeit ginge so verloren.
 

byte

Top Contributor
alex0801 hat gesagt.:
Ich glaub fast nicht dass es sowas gibt. Damit wäre man sicher auch etwas eingeschränkt was die flexibilität und komplexität von Statements betrifft.
Klar gibts das.

Ich nehme an du willst mit so einer Lib die unterschiedlichen SQL-Dialekte und Eigenheiten auf einen gemeinsamen Nenner bringen?
Ich stell jetzt einfach mal so in den Raum, dass die Unterschiede in den einzelnen Sprachfeatures einer DB zu unterschiedlich sind um sowas zu realisisieren. Denn sonst gäbe es vermutlich auch schon einen "universellen" JDBC Treiber der mit allen Datenbanken kann und den man mit einem vereinheitlichenten SQL-Dialekt füttert.
Warum sollte sich jemand die Mühe machen, einen generischen DB-Treiber zu schreiben? Jeder DB-Hersteller stellt doch JDBC-Treiber für Ihre DB bereit. Den Entwickler interessiert doch eigentlich herzlich wenig, was unterhalb von JDBC passiert.
 
G

Guest

Gast
maki hat gesagt.:
Welche Version von JDO?

JDO2.0 soll der JPA in vielen Bereichen überlegen sein.

Ansonmmsten stimme ich dir zu, die DB Unabhängigkeit ginge so verloren.

JDO 1.0, leider!
 

balko

Mitglied
byto hat gesagt.:

Was gibt es denn da?

Ich bräuchte das automatische Generieren von SQL Statements für folgenden Anwendungsfall. Ich stopfe Daten aus Excel in ein Java-Objekt. Dieses Java-Objekt, welches im wesentlichen die ExcelTabellenDaten enthält möchte ich dann in eine bestimmte bereits existierende Datenbanktabelle schreiben.

Hibernate scheidet in diesem Fall also meiner Meinung nach aus, da die Struktur der Datenbanktabellen bereits vorgegeben ist.

Eine Idee?
 
T

tuxedo

Gast
Mit iBatis lässt sich das bewerkstelligen. Zumindest das Mapping. Wenn du die DB wechselst, musst du nur den JDBC wechseln und passende Mappings bereitstellen. Automatisch wird allerdings kein SQL-Statement geformt.

- Alex
 

balko

Mitglied
Mir geht es insbesondere um das automatische erstellen von SQL-Statements. NICHT um das Mapping.

Beispielsweise möchte ich eine Methode haben, der ich eine Referenz auf eine SQL-Tabelle und einzufügende Daten (bspw. als Array oder Liste) übergebe und die dann ein passende SQL-Statements generiert.
 

ms

Top Contributor
balko hat gesagt.:
Hibernate scheidet in diesem Fall also meiner Meinung nach aus, da die Struktur der Datenbanktabellen bereits vorgegeben ist.
Das ist kein Grund. Du kannst auch Hibernate mit vorhandener Tabellenstruktur verwenden.
Gibt ja genug Reverseengeneering-Tools mit denen du aus vorhandenen Tabellen/Relationen die Hibernatekonfiguration und die Mappingfiles generieren kannst.

Andere Frage: Ist dies eine einmalige Aufgabe (Datenmigration) oder soll das regelmäßig durchgeführt werden? Und wie viele Tabellen gibt es und gibt es Relationen?
Falls es was einmaliges ist, würde es nicht reichen im Excel eine Spalte neben den Daten anhand einer Formel dir ein Insert-Statement zu schreiben und für alle Datenzeilen einfach runterkopieren?

ms
 

balko

Mitglied
ms hat gesagt.:
balko hat gesagt.:
Hibernate scheidet in diesem Fall also meiner Meinung nach aus, da die Struktur der Datenbanktabellen bereits vorgegeben ist.
Das ist kein Grund. Du kannst auch Hibernate mit vorhandener Tabellenstruktur verwenden.
Gibt ja genug Reverseengeneering-Tools mit denen du aus vorhandenen Tabellen/Relationen die Hibernatekonfiguration und die Mappingfiles generieren kannst.

Das ist natürlich eine gute Idee. Kannst du da ein Tool empfehlen?

ms hat gesagt.:
Andere Frage: Ist dies eine einmalige Aufgabe (Datenmigration) oder soll das regelmäßig durchgeführt werden? Und wie viele Tabellen gibt es und gibt es Relationen?

Nein es wird sich bei den Excel files um Daten handeln die sehr häufig neu in die Datenbank geladen werden müssen.


Danke schonmal für die Hilfe!
 

byte

Top Contributor
balko hat gesagt.:
Mir geht es insbesondere um das automatische erstellen von SQL-Statements. NICHT um das Mapping.

Beispielsweise möchte ich eine Methode haben, der ich eine Referenz auf eine SQL-Tabelle und einzufügende Daten (bspw. als Array oder Liste) übergebe und die dann ein passende SQL-Statements generiert.
SQL zu Java-Objekten generieren ohne ein Mapping zu einem bestehenden DB-Schema anzugeben, ist wohl unmöglich. Oder soll die Library vielleicht raten, wo die Daten evtl. hingehören könnten? :roll:
 

balko

Mitglied
Danke für den Hinweis auf HibernateTools. Kann ich nur empfehlen!

Ich habe noch eine Frage zum persistieren von Objekte mit Hibernate. Wenn man nur ein Objekt hat, kann man ja

Code:
session.save(object);

benutzen. Welchen Befehl kann ich benutzen, wenn ich eine Sammlung (Liste, Set, Array...) von Objekten habe? ...natürlich wäre es möglich mit einer Schleife mehrmals den save-Befehl aufzurufen, aber dann wird immer ein neues SQL-Statement erzeugt und das dauert dann ziemlich lange...


Jemand eine Idee?

MfG
ein balko
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
P SQLite Library frisst kompletten RAM Datenbankprogrammierung 10
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
G Problem mit neuer Hibernate Library und SLF4J Logging Datenbankprogrammierung 5
K Entity-Klassen generieren Datenbankprogrammierung 4
G H2 SQL Skript generieren Datenbankprogrammierung 2
M Tabelle in Access Datei mit JDBC generieren Datenbankprogrammierung 3
A Hibernate hbm.xml Files generieren lassen Datenbankprogrammierung 9
H Sql Statements automatisch generieren lassen Datenbankprogrammierung 2
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
berserkerdq2 database is closed, obwohl ich alle statements in try catch blöcken habe? Datenbankprogrammierung 5
J Wohin mit den SQL-Statements ? Datenbankprogrammierung 7
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
U JDBC prepaird Statements Datenbankprogrammierung 4
T Prepared Statements und Sets Datenbankprogrammierung 5
S SqlObject - eine objektorientierte Art SQL-Statements zu schreiben. Datenbankprogrammierung 4
P DB2 Reihenfolge Create Statements Datenbankprogrammierung 2
D Anzeige wärend des Ausführens eines Statements Datenbankprogrammierung 13
Z manipulation statements with executeQuery Datenbankprogrammierung 7
F statements und resultsets schließen Datenbankprogrammierung 2
L Wiederverwendung von Prepared Statements Datenbankprogrammierung 4
N prepared Statements Datenbankprogrammierung 6
M [gelöst] Problem mit SQL Server. Statements... Datenbankprogrammierung 4
H Wie viele SQL-Statements gehen in ein Batch Datenbankprogrammierung 2
P frage zu "" bei INSERT STATEMENTS Datenbankprogrammierung 2
K frage zum ausführen eines INSERT statements Datenbankprogrammierung 16
J Aufteilung von Verbindungsaufbau & SQL Statements sinnvo Datenbankprogrammierung 15
R Statements und Resultset Allgemein Datenbankprogrammierung 2
G Ausführen von SQL-Statements Datenbankprogrammierung 7
H logging von postgresql statements Datenbankprogrammierung 5
G Flexible Prepared Statements Datenbankprogrammierung 2
L Mehrere SQL-Statements gleichzeitig!? Datenbankprogrammierung 5
F Update mit Prepared Statements Datenbankprogrammierung 10
M Problem mit Insert-Statements/ PreparedStatements Datenbankprogrammierung 6

Ähnliche Java Themen


Oben