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

Java-threadsichere Datenbankverbindungen

Ich glaube nicht, dass es üblich ist, Datenbankverbindungen Thread-sicher zu machen. Normalerweise möchten Sie entweder:

  • Serialisieren Sie den Zugriff auf einen Teil Ihres Servlets, sodass nicht mehr als ein Servlet gleichzeitig Code ausführt (z. B. Implementierung des SingleThreadModel Schnittstelle).
  • Sperren einer bestimmten Tabelle/Tabellenseite/Zeile, damit Sie mit einem bestimmten Tupel arbeiten können (indem Sie die Isolationsstufe der Datenbank ändern).
  • Optimistisches Sperren verwenden, um geänderte Zeilen in einer Tabelle zu erkennen (unter Verwendung eines Referenzattributs der Tabelle, um zu prüfen, ob die aktuelle Version dieselbe ist wie die in der Tabelle).

AFAIK, die typische Verwendung von ThreadLocal<Connection> besteht darin, eine eindeutige Datenbankverbindung pro Thread zu speichern, sodass dieselbe Verbindung in verschiedenen Methoden in Ihrer Geschäftslogik verwendet werden kann, ohne sie jedes Mal als Parameter übergeben zu müssen. Da die allgemeine Servlet-Container-Implementierung einen Thread verwendet, um eine HTTP-Anforderung zu erfüllen, verwenden zwei unterschiedliche Anforderungen garantiert zwei unterschiedliche Datenbankverbindungen.