# JDBC prepaird Statements



## Unlikus (8. Mrz 2014)

Wollte mal fragen, wie es mit der Performance von prepaird Statements aussieht, insbesondere wenn man sie nur für ein einziges Query nutzt.
Und gibt es Möglichkeiten prepaird Statements zu speichern und erst mal andere zu machen und dann das erste wieder zu nutzen(Also nur noch mal die Daten an die DB schicken) und in wie weit ist das möglich, also wie lange hält sich so ein Statement, vielleicht auch über mehrere Requests.
Ich verwende übrings als datenbank mysql und play für den Javateil

Schon mal vielen Dank im Vorraus.


----------



## Barista (9. Mrz 2014)

> Und gibt es Möglichkeiten prepaird Statements zu speichern und erst mal andere zu machen und dann das erste wieder zu nutzen(Also nur noch mal die Daten an die DB schicken) und in wie weit ist das möglich, also wie lange hält sich so ein Statement, vielleicht auch über mehrere Requests.



Ja, prepared statements sind mit der connection verbunden,
solange Du die selbe connection verwendest, kannst Du
die prepared statements wiederverwenden.

Auch über mehrfache Verwendung über mehrere Connections
(natürlich dann jedes mal ein eigenes Statement-Obejtkt,
 aber der gleiche SQL-String) 
sollte die Performance verbessern.

Der JDBC-Treiber bzw die DB cachen den Ausführungsplan.


----------



## Unlikus (9. Mrz 2014)

Aber werden prepaird statements nicht in der DB gehalten?

Also kann ich wenn ich einem statement objekt je nur ein query gebe, machen was ich will, ohne das ich angst haben muss, ich schicke daten an die DB, wofür kein statement mehr existiert?


----------



## Barista (9. Mrz 2014)

> Aber werden prepaird statements nicht in der DB gehalten?



Wahrscheinlich ja, von Java aus ist das nicht zu erfahren,
das passiert hinter der Schnittstelle.



> Also kann ich wenn ich einem statement objekt je nur ein query gebe, machen was ich will, ohne das ich angst haben muss, ich schicke daten an die DB, wofür kein statement mehr existiert?



Was soll das bedeuten?: *ein query gebe*


----------



## Unlikus (9. Mrz 2014)

mag zwar sein, dass es nicht wichtig ist, aber für Performanceüberlegungen schon. (gut mag sein, dass ich mir darüber zu viele Gedanken mache)

mit query gebe meinte ich eig nur, dass jedes Statement genau ein Query, bzw Querytemplate repräsentiert.


----------

