J'ai lancé findbugs sur notre base de code et il a souligné qu'il y a deux autres instructions qui doivent encore être fermées. Dans cette section du code, nous exécutons:Réutilisation d'un PreparedStatement
preparedStatement = connection.prepareStatement(query);
pour 3 requêtes différentes, en réutilisant prepareStatement. Dans le bloc finalement, nous fermons la ressource:
finally{
try{
if (resultSet != null)
resultSet.close();
} catch (Exception e) {
exceptionHandler.ignore(e);
}
try {
if (preparedStatement != null)
preparedStatement.close();
} catch(Exception e) {
exceptionHandler.ignore(e);
}
Si la déclaration soit fermée avant la prochaine Connection.prepareStatement (requête); ou est-ce que les findbugs sont prudents?
Que vous ayez besoin ou non de la référence est sans conséquence. Lorsque vous appelez connection.prepareStatement (query), vous créez un prepareStatement dans cette connexion. Ceux-ci vont rester là jusqu'à ce que la connexion soit fermée. Lorsque vous touchez cela, vous ne faites que fermer l'instruction préparée par cette variable. Laisser 2 des 3 jusqu'à ce que la connexion soit fermée. En production, vous continuerez à fuir les connexions et éventuellement à manquer si vous ne supprimez pas Abandoned (tomcat) ou similaire. – Zach
Merci pour l'explication! Ajouté les changements :) –