Je ne pense pas que la création de connexions de base de données thread-safe soit une pratique courante. Généralement, ce que vous voulez est :
- Sérialisez l'accès à une partie de votre servlet, afin qu'il n'y ait pas plus d'une servlet exécutant du code à la fois (par exemple, implémenter le
SingleThreadModel
interface). - Verrouiller une table/page de table/ligne particulière afin que vous puissiez opérer sur un tuple particulier (en modifiant le niveau d'isolation de la base de données).
- Utilisation du verrouillage optimiste pour détecter les lignes modifiées dans une table (utilisation d'un attribut de référence de la table pour vérifier si la version actuelle est la même que celle de la table).
AFAIK, l'utilisation typique de ThreadLocal<Connection>
est de stocker une connexion de base de données unique par thread, de sorte que la même connexion puisse être utilisée dans différentes méthodes de votre logique métier sans avoir besoin de la transmettre en tant que paramètre à chaque fois. Étant donné que l'implémentation courante du conteneur de servlet utilise un thread pour répondre à une requête HTTP, deux requêtes différentes sont garanties d'utiliser deux connexions de base de données différentes.