La fermeture de Connection ferme-t-elle automatiquement l’instruction et le jeu de résultats?

Je sais que le modèle sûr en Java consiste à fermer votre ResultSet, votre instruction et votre connexion dans un bloc finally.

Si vous fermez la connexion et essayez ensuite de fermer l’instruction (ne lance pas d’exception). Mais si vous essayez d’appeler une méthode à partir d’une instruction, une exception est levée.

Je me demandais si la fermeture de la connexion ferme automatiquement tous les objects de déclaration créés à partir de cette connexion?

Mettre à jour:
J’utilise DatabaseProductVersion: Oracle Database 11g version 11.1.0.0.0
DriverName: Pilote Oracle JDBC
DriverVersion: 10.2.0.4.0

Oui, l’API Connection.close indique «Libère immédiatement la firebase database et les ressources JDBC de cet object Connection au lieu d’attendre qu’elles soient libérées automatiquement». Le problème est que les applications utilisent généralement des pools de connexions de firebase database et que ceux-ci peuvent simplement renvoyer Connection au pool sur Connection.close.

Dans tous les cas, il est recommandé de toujours fermer explicitement ResultSet et Statement et de ne pas s’appuyer sur Connection.close.

De plus, ce n’est pas la meilleure idée de travailler directement avec JDBC. Vous pouvez utiliser Spring JDBC à la place et oublier le problème de la libération des ressources.

Les détails sont finalement à chaque implémentation de pilote JDBC; Cependant, une fois qu’une connexion à la firebase database est fermée, tout ce qui s’y rapporte est supprimé du côté de la firebase database. Le côté client ne peut donc rien faire d’autre que la fermeture automatique des objects représentant ces ressources.

Vous ne savez jamais de quelle manière les bases de données / pilotes peuvent être brisés (il peut y avoir des fuites de ressources, par exemple), par conséquent, la meilleure pratique consiste à tout fermer de manière explicite.