Associação Bidirecional one-to-one

Qual é a forma mais elegante de mapear as seguintes classes?

class Pessoa {
Integer id;
Cliente cliente;
}

class Cliente {
Integer id;
Pessoa pessoa;
}

Quero navegar por ambas as partes:

cliente.pessoa e pessoa.cliente

Na documentação do Hibernate diz o seguinte:

“A bidirectional one-to-one association on a foreign key is quite common.”

“A bidirectional one-to-one association on a primary key uses the special id generator.”

Qual é a melhor forma?