Estou bastante acostumado a trabalhar com JDBC e montar o SQL na mão para cada consulta no banco de dados.
Estou em dúvida em como o mercado costuma implementar o JPA, pois na minha visão, fazer duas consultas no banco de dados (consumir duas vezes o recurso que costuma ser o mais escasso do sistema para carregar a mesma informação) baseado no atributo do objeto que vou acessar, não geraria custos a mais e lentidão, comparado numa query planejada?
Dessa forma, não seria mais vantajoso sempre utilizar queries planejadas para fazer esse tipo de consulta, mesmo quando tenho garantias que a conexão não será fechada?