public int insert(Funcao f) {

        Connection conn = null;
        PreparedStatement pstm = null;
        int retorno = -1;

        try {
            conn = ConnectionFactory.getConnection();
            pstm = conn.prepareStatement(INSERT, Statement.RETURN_GENERATED_KEYS);
            pstm.setString(1, f.getNome());
            pstm.execute();
            try (ResultSet rs = pstm.getGeneratedKeys()) {

                if (rs.next()) {
                    retorno = (rs.getInt(1));
                }
            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Não foi possível efetuar a transação" + ex.getMessage());
        } finally {
            try {
                ConnectionFactory.closeConnection(conn, pstm);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, "Erro ao fechar a conexão" + ex.getMessage());
            }
        }
        return retorno;
    }