Lentidao ao usar hibernate

Bom dia, tenho tres tabelas que se relacionam da seguinte forma:

Tabelas: Casa, Porta e Janela

Então crio dentro da tabela ‘Casa’ um objeto ‘Porta’ e um objeto ‘Janela’, mais ou menos assim:

...
private Porta porta;

private Janela janela;
...

Desta forma, na tabela ‘Casa’ cria-se dois parametros, que são eles: ‘porta_id’ e ‘janela_id’

Até esta parte não tenho nenhum problema ao salvar novas informações no banco, mas quando faço um SELECT por id na tabela casa, percebo que o hibernate monta um join com as tabelas ‘Porta’ e ‘Janela’

Como faço para evitar este join em outras tabelas?

Como está o seu relacionamento? tente usar o FetchType.LAZY. Ele faz a consultar trazer o objeto apenas se for necessário.
Ex:

@ManyToOne(fetch=FetchType.LAZY) private Porta porta;

ok, vamos supor que eu tivesse 10 tabelas, ‘tabela01’,‘tabela02’,‘tabela03’,‘tabela04’,‘tabela05’,‘tabela06’,‘tabela07’,‘tabela08’,‘tabela09’,‘tabela10’.
E que a tabela01 crio um objeto da tabela02 e na tabela02 crio um objeto na tabela03 e assim por diante, quando eu fizer uma busca por id na tabela01, o hibernate ira fazer o join em todas as tabelas?

Sim. Pelos testes que já fiz o hibernate traz todos os objetos associados ao objeto que está buscando e assim para cada um deles, para impedir isso que é usado FetchType.LAZY.

Entendi, eu posso usar o fetch em qualquer anotação de relacionamento? por exemplo: @OneToOne, @OneToMany e @ManyToOne?

Teoricamente pode, mas em alguns casos o Hibernate lança uma exceção, então você é obrigado a usar a forma padrão que é fetch=FetchType.EAGER.Só não sei te dar exemples destes casos.

Caso eu tenha uma aplicação com 30 tabelas relacionadas entre si e eu não use a anotação do fetch, a performance do meu sistema estara comprometida?

caso seu sistema seja WEB utilize o padrão OSV ok!!!

Desculpe minha ignorancia, mas o que é OSV?

Open Session in View

http://www.google.com.br/#hl=pt-BR&biw=1016&bih=583&q=open+session+in+view+spring&aq=3&aqi=g7&aql=&oq=open+ses&gs_rfai=&fp=1&cad=b