O relacionamento OneToOne com chave primária compartilhada gera n + 1 seleções; alguma solução alternativa?

Imagine 2 tabelas em um banco de dados relacional, por exemplo Pessoa e Faturamento. Existe uma associação OneToOne (não obrigatória) definida entre essas entidades e elas compartilham a chave primária Person (ou seja, PERSON_ID é definida em Pessoa e Faturamento e é uma chave estrangeira no último).

Ao fazer uma seleção na pessoa através de uma consulta nomeada, como:

<code>from Person p where p.id = :id
</code>

O Hibernate / JPA gera duas consultas selecionadas, uma na tabela Person e outra na tabela Billing.

O exemplo acima é muito simples e não causaria problemas de desempenho, pois a consulta retorna apenas um resultado. Agora imagine issoPerson temn Relacionamentos OneToOne (todos não obrigatórios) com outras entidades (todos compartilhandoPerson chave primária).

Corrija-me se estiver errado, mas executando umselect consulta na pessoa, retornandor linhas, resultaria em(n+1)*r seleciona sendo gerado pelo Hibernate, mesmo que as associações sejampreguiçoso.

Existe uma solução alternativa para esse possível desastre de desempenho (além de não usar uma chave primária compartilhada)? Obrigado por todas as suas ideias.

questionAnswers(5)

yourAnswerToTheQuestion