# PreparedStatement und Transaktionen



## gorgonsel (12. Jun 2011)

Hallo,

Meine Anwendung verwendete zunächste Statements, die über eine Connection aus einem Pool erzeugt wurde. Jetzt möchte ich die Anwendung umschreiben und PreparedStatements erzeugen.
Nun scheint es aber so, daß ich jedesmal in der Methode, in der ich speichern will, das PreparedStatement neu erzeugen muss. Das ist nun aber nicht Sinn der Sache. Es sollte nur einmal erzeugt werden und dann bei jedem Aufruf von Speichern verwendet werden. Als Notlösung bliebe nur, von außen die Connection als Parameter mit zu übergeben, aber das ist auch kein tolles Design. Ist so etwas überhaupt ohne Hilfsmittel wie Hibernate oder ähnliches machbar?

Gruß
Frank


----------



## SlaterB (14. Jun 2011)

was würdest du denn bei Hibernate machen können?
offensichtlich müsstest du wenigstens dann statt der Connection die Session übergeben oder was auch immer,
wobei überhaupt fraglich ist, wie du in deiner Methode ohne Connection irgendwas machen willst,

das PreparedStatement sollte irgendwo abgelegt werden, richtig,
das erfordert eine gewisse Infrastruktur über die man in 100 Dimensionen nachdenken kann, keine einzelne Antwort,

als einen Tipp möchte ich erwähnen:
Basisklassen, die auch mit Connection & Co. initialisiert werden, so dass alle allgemeinen Informationen  dauerhaft verfügbar sind,
dann braucht die Methode gar keinen Parameter von den aktuellen Query-Daten abgesehen, 
in Hibernate oder auf andere Weise gleich


----------



## tfa (14. Jun 2011)

> Nun scheint es aber so, daß ich jedesmal in der Methode, in der ich speichern will, das PreparedStatement neu erzeugen muss. Das ist nun aber nicht Sinn der Sache.


Das macht nichts. Es ist völlig in Ordnung, ein Prepared-Statement-Objekt nur einmal zu verwenden. Die Dinger sind deswegen effizient, weil der DB-Server sie cachen kann und nicht, weil man Java-Objekte wiederverwertet.


----------

