public boolean alterar(MateriaPrima materiaPrima) throws Exception {
    boolean status = false;

    // string query do banco
    String sql =
        " UPDATE materiaprima SET codigo=?, nome=?, estoque=?, unidade=?, fabricacao=?,"
            + " vencimento=?, descricao=? where id=?";
    PreparedStatement ps = null;

    // chama uma instância da Connection e tenta realizar uma conexão com o banco através do
    // AutoCloseable
    try (Connection conn = ConnectionProvider.getInstance().getConnection()) {
      // seta os atributos do objeto matéria-prima, fazendo a alteração.
      ps = conn.prepareStatement(sql);
      ps.setString(1, materiaPrima.getCodigo());
      ps.setString(2, materiaPrima.getNome());
      ps.setDouble(3, materiaPrima.getEstoque());
      ps.setLong(4, materiaPrima.getUnidade());

      if (materiaPrima.getFabricacao() != null) {
        ps.setDate(5, Date.valueOf(materiaPrima.getFabricacao()));
      } else {
        ps.setNull(5, Types.DATE);
      }

      if (materiaPrima.getVencimento() != null) {
        ps.setDate(6, Date.valueOf(materiaPrima.getVencimento()));
      } else {
        ps.setNull(6, Types.DATE);
      }

      ps.setString(7, materiaPrima.getDescricao());
      ps.setLong(8, materiaPrima.getId());

      if (ps.executeUpdate() != 0) {
        status = true;
      }

      // fecha as conexões
      ps.close();
      conn.close();
    }
    // trata, caso de uma exceção
    catch (SQLException e) {
      System.out.println("Erro ao alterar a materiaPrima\n" + e);
    }
    // retorna true ou false, dizendo se o metodo foi executado com sucesso.
    return status;
  }