Supposons qu'un code jdbc exécute certaines opérations CRUD. Maintenant, dans un scénario particulier, il y avait un verrou de ligne et la session devenait bloquante pour les autres sessions de base de données.La suppression d'une session au niveau du serveur de la base de données ferme-t-elle également la connexion et rend l'objet de connexion jdbc nul?
Dans ce cas, si la session de blocage a été supprimée du côté de la base de données, qu'adviendrait-il de l'objet java Connection correspondant? Cet objet deviendrait-il nul après avoir donné une exception? Quel pourrait être le comportement si cet objet de connexion est utilisé plus tard dans le code sans placer les contrôles?
Je sais que nous devrions obtenir une connexion à partir du pool et la fermer lorsque vous avez terminé, mais il y a beaucoup de code ancien écrit dans l'autre sens qui prendra un certain temps à nettoyer.
Quelle serait la réponse si la connexion ci-dessus est créée via une source de données, en gérant le pool de connexions, plutôt que via une connexion jdbc simple? Toutes les opérations en cours lanceront un SQLException
et tous les appels à la méthode Connection.isClosed()
retourneront true.
Quel serveur de base de données est-ce? Non pas que ce soit important, c'est le pilote JDBC que vous utilisez, qui pourrait être plus important. –
Le serveur de base de données Oracle 10g est utilisé via le pilote thin jdbc. – user510927