Est java.sql.Connexion thread-safe?
Reformuler la question: dois-je éviter de partager des instances de classes qui implémentent java.sql.Connection
entre les différents threads?
- Voir aussi Java thread-safe connexions de base de données.
Vous devez vous connecter pour publier un commentaire.
Si le pilote JDBC est conformes aux spécifications, puis, techniquement, oui, l'objet est thread-safe, mais vous devriez éviter de partager des connexions entre les threads, puisque l'activité sur la connexion ne dire qu'un seul thread sera en mesure de faire quelque chose à un moment.
Vous devez utiliser un pool de connexion (comme Apache Commons DBCP) pour s'assurer que chaque thread possède sa propre connexion.
java.sql.La connexion est une interface. Donc, tout dépend du pilote de la mise en œuvre, mais en général, vous devriez éviter de partager la même connexion entre les différents threads et de l'utilisation des pools de connexions. Aussi, il est également conseillé d'avoir le nombre de connexions dans le pool de plus que le nombre de threads de travail.
C'est plutôt un vieux thread, mais pour ceux qui sont à la recherche d'une réponse concernant Microsoft SQL Server, voici la réponse:
et
De tous les ci-dessus, vous pouvez partager des déclarations, mais pas les Connexions, et dans le cas où vous avez besoin d'une connexion dans chaque thread, vous pouvez utiliser un pool de threads.
Lire plus ici
Oracle JDBC et le Multithreading docs:
De sorte qu'il peut être en sécurité dans Oracle cas, mais l'accès simultané aurait à souffrir de goulot d'étranglement.
Controlled serial access to a connection, such as that provided by connection caching, is both necessary and encouraged. However, Oracle strongly discourages sharing a database connection among multiple threads. Avoid allowing multiple threads to access a connection simultaneously. If multiple threads must share a connection, use a disciplined begin-using/end-using protocol.
Nous avons eu ArrayOutOfBoundsException sur Websphere cache d'instruction de la pooleddatasource, et nous avons dû désactiver le cache.
Nous avons eu un traitement qui a été le blocage lui-même.
Tous à cause de l'accès à la connexion, de sorte que la conclusion par la vie réelle de la pratique, est que vous ne devez pas le faire.