我不认为使数据库连接具有线程安全性是常见的做法。通常您想要的是:
- 序列化对servlet某个部分的访问,以便一次执行代码的servlet不超过一个(例如,实现
SingleThreadModel
接口)。 - 锁定特定的表/表页面/行,以便您可以对某些特定的元组进行操作(通过更改数据库隔离级别)。
- 使用乐观锁定来检测表中的修改行(使用表的某些引用属性来检查当前版本是否与表中的版本相同)。
AFAIK的典型用法
ThreadLocal<Connection>是为每个线程存储一个唯一的数据库连接,以便可以在业务逻辑中的不同方法中使用相同的连接,而不必每次都将其作为参数传递。因为公共servlet容器实现使用线程来满足HTTP请求,所以保证了两个不同的请求使用两个不同的数据库连接。



