# JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ...



## Kosta.Kos (5. Okt 2012)

Hallo Leute,

ich bin gerade dabei einen Restful Webservice mit Datenbankanbindung zu realisieren.
Ich suche nach einem Weg, Stored Procedures in Java zu erstellen und zu nutzen.
Gibt es in JDBC die Möglichkeit 'abgespeckte' Stored Procedures (natürlich nicht voller Funktionsumfang)
zu erstellen, die durch Transformation sowohl für DB2/Oracle Sql/MS Sql einsetzbar sind?
Mein Ziel ist natürlich DB-Unabhängigkeit, sodass das Back-End einfach nur JDBC unterstützen muss und der Rest kann mir egal sein.
Falls dies nun nicht möglich ist, wäre ich für alternative Vorschläge dankbar.

Grüße und ein schönes Wochenende

Kosta


----------



## SlaterB (5. Okt 2012)

der Funktionsumfang von JDBC ist überschaubar,
du kannst das SQL für die Stored Procudere senden und es geht oder eben nicht
Using Stored Procedures (The Java™ Tutorials > JDBC(TM) Database Access > JDBC Basics)

allgemein einer meiner Standard-Hinweise:
ein Programm zum Gebrauch muss nicht die Initialisierung enthalten, 
es ist eher unsinnig, mit Java-Programmen DB-Tabellen, Stored Procedures, andere Java-Klassen, selbst gewisse feste einmalige Verzeichnisse anzulegen,
für all das gibt es eigene Programme mit direkter Rückmeldung

oder muss das regelmäßig/ automatisch zu bestimmten Zeitpunkten/ neuen Datenbanken passieren?


----------



## Kosta.Kos (5. Okt 2012)

Hallo SlaterB,

erstmal danke für die schnelle Antwort!
Die Stored Procedures möchte ich soweit nur einmal erstellen und ansonsten immer mal wieder "call-en".
Beim call werden dann hauptsächlich 'inserts' in verschiedenen Tabellen meiner DB vorgenommen. 
So möchte ich meine Daten aus dem Front-End (HTML) über die Mittelschicht (Restful Webservice) in mein Back-End (Relationale DB)  bekommen. 
Es wäre natürlich super wenn die in Java erstellte Stored Procedure für alle DBs (DB2/OracleSql ...) interpretierbar wäre. So könnte mir beim call ganz egal sein, was für ein Back-End ich habe.
Damit will ich es umgehen, die Procedures für jede DB einzeln anzulegen.

Ist die Idee korrekt, oder habe ich gerade iwo einen Knoten im Kopf?

Grüße
Kosta


----------



## SlaterB (5. Okt 2012)

ich persönlich habe Zweifel, dass in allen Datenbanken die Stored Procedures gleich aussehen,
aber Java hat darauf so oder so keinen Einfluss, besonders JDBC, was bis auf Werte-Formatierung in PreparedStatements kein Deut SQL selber formuliert,
du kannst quasi nur SQL in die DB übermitteln und fertig

fange mit DB 1 an, ob Create-Skript für Stored Procedure, was du einerseits als nicht so wichtig ansiehst, dennoch weiter erwähnst,
sowie vor allem den Aufruf,

schaue dir danach DB 2 an, wenn der Aufruf derselbe ist, dann gut, sonst halt mehr Arbeit, Fallunterscheidung

JDBC wird dir jedenfalls nicht eine Metasprache, gar Java Aufrufe 
> DB.wrapStoredProcedure("name").call(parameter)
anbieten, pro DB in evtl. anderes SQL umwandeln, nein, JDBC ist bewußt ganz basic

Hibernate z.B. kann allgemein bisschen mehr, besonders die Criteria-API, zu Stored Procedure habe ich aber nichts gehört,
auch sonst kann ich dazu keine Hilfe von irgendwo nennen (was nicht heißt, dass es keine gibt)


----------

