No estás usando el mismo PreparedStatement , el método de fábrica Connection.prepareStatement te está devolviendo una nueva instancia cada vez que lo llamas. PreparedStatement.executeQuery está haciendo lo mismo con ResultSet . Solo estás usando las mismas variables.
Esto significa que está perdiendo recursos:la primera PreparedStatement y ResultSet - cada vez que se llama a este método, que nunca se cierra.
Mi recomendación sería usar JdbcTemplate de Spring que manejará estos recursos de la base de datos correctamente para usted y dividirá su código en dos métodos.