Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sollte ich PreparedStatements für alle meine Datenbankeinfügungen in Java verwenden?

Ja, verwenden Sie vorbereitete Anweisungen für alles.

  1. Sie werden einmal geparst.

  2. Sie sind immun gegen SQL-Injection-Angriffe.

  3. Sie sind ein besseres Design, weil Sie über Ihre SQL und ihre Verwendung nachdenken müssen.

Wenn Sie denken, dass sie nur einmal verwendet werden, sehen Sie nicht das große Ganze. Irgendwann werden sich Ihre Daten oder Ihre Anwendung ändern.

Bearbeiten.

Warum regen vorbereitete Anweisungen dazu an, über Ihr SQL nachzudenken?

  • Wenn Sie einen String zusammensetzen (oder einfach einen wörtlichen Textblock ausführen), erstellen Sie kein neues PreparedStatement Objekt. Du führst nur SQL aus -- es kann sehr beiläufig gemacht werden.

  • Wenn Sie ein PreparedStatement erstellen (und speichern) müssen , man muss nur ein klein wenig mehr über Kapselung, Verantwortungszuweisung nachdenken. Die Vorbereitung einer Anweisung ist ein zustandsbehaftetes Ereignis vor jeder SQL-Verarbeitung.

Der Mehraufwand ist gering, aber nicht unerheblich. Das ist der Grund, warum Leute anfangen, über ORM und eine Daten-Caching-Schicht nachzudenken, und solche Dinge, um ihren Datenbankzugriff zu optimieren.

Mit vorbereiteten Anweisungen ist der Datenbankzugriff weniger zufällig, sondern absichtlicher.