Essa exceção com.mysql.jdbc.exceptions.jdbc4.CommunicationsException ocorre se sua conexão de banco de dados estiver inativa por muito tempo. Esta conexão ociosa retorna true em connection.isClosed(); mas se tentarmos executar a instrução, ela acionará essa exceção, então sugiro usar o pool de banco de dados.