Qual dos dois métodos é mais eficaz

Estou com uma dúvida, se eu estiver criando um modelo de objeto, por exemplo Pedido, e este pedido tem um funcionario relacionado no banco de dados, porque todo pedido tem um funcionario, enfim qual seria melhor eu utilizar:

public class Pedido {
    private int cod_mesa;
    private float valor;
    private int qtdProduto;
    private Funcionario funcionario;    
}

ou

public class Pedido e{
    private int cod_mesa;
    private float valor;
    private int qtdProduto;
    //uma chave estrangeira para depois buscar o funcionario correspondente
    private int idFuncionario;    
}

tendo em vista que no código eu vou fazer a requisições no meu web service, qual seria a maneira mais rápida, na primeira opção vou fazer duas requisições, e na segunda vou fazer uma requisição só que bem mais longa, qual é a melhor maneira ?

Depende, você sempre precisa do funcionário quando busca um pedido? Se não precisa, pode usar só o ID do funcionário, porque nos casos que não precisa, vai ser um pouquinho mais rápido. Não acho que isso seja um gargalo de performance. Não se preocupe em escrever a aplicação mais otimizada do mundo através desses detalhes, mas em escrever uma aplicação que funcione. Depois disso, se existirem gargalos, você pode otimizar.

Obrigado pela ajuda ivbarbosa

@jvictororiz, quando falamos sobre orientação a objetos, podemos esquecer as referências como id. Esta é uma referência que foi importada da programação estruturada, onde existe a necessidade de referenciarmos a conexão entre uma entidade e outra através de chaves. No mundo dos objetos, você ainda possui cardinalidade, mas, ela é entendida de outra maneira.
Objetos utilizam composição ou agregação, até mesmo herança e, teoricamente, poderiam dispensar coisas como os ‘ids’, que, especificamente falando, se referem a primary keys dos bancos de dados relacionais.