Se você tem uma classe como a classe abaixo:
public void Pessoa{
private String nome;
private String cpf;
private String cidade;
private String estado;
private String pais;
}
Você carrega ela numa boa. Pois são campos que pertencem a ela.
Agora se sua classe tem os campos:
public void Pessoa{
private String nome;
private String cpf;
@ManyToOne
private Cidade cidade;
@ManyToOne
private Estado estado;
@ManyToOne
private Pais pais;
@OneToMany(EAGER)
private Cachorros dogs;
}
note que agora alem de carregar a classe pessoa você está carregando a moçada que vem com ela.
Entao, se você fizer o select na classe carro
Carro{
private Pessoa pessoa;
}
Alémde trazer pessoa, vc vai trazer todas as outras classes juntas.
Com isso, teria que colocar as classes do relacionamento como LAZY. Aí sim, vc nao trairia todo mundo mundo.
Espero que dê para entender.