Jeg tror ikke, at det er almindelig praksis at gøre databaseforbindelser trådsikre. Normalt er det, du ønsker, enten:
- Serialiser adgangen til en del af din servlet, så der ikke er mere end én servlet, der udfører kode ad gangen (f.eks. implementering af
SingleThreadModel
grænseflade). - Låsning af en bestemt tabel/tabelside/række, så du kan arbejde på en bestemt tuple (ved at ændre databaseisolationsniveauet).
- Brug af optimistisk låsning til at detektere ændrede rækker i en tabel (ved at bruge nogle referenceattributter i tabellen for at kontrollere, om den aktuelle version er den samme som den i tabellen).
AFAIK, den typiske brug af ThreadLocal<Connection>
er at gemme en unik databaseforbindelse pr. tråd, så den samme forbindelse kan bruges i forskellige metoder i din forretningslogik, uden at du behøver at sende den som en parameter hver gang. Fordi den fælles servlet-beholderimplementering bruger en tråd til at opfylde en HTTP-anmodning, så er to forskellige anmodninger garanteret at bruge to forskellige databaseforbindelser.