Duvida sobre Sessao Hibernate - Sistema Desktop

Pessoal,

tenho a seguinte duvida em relacao a utilizacao de hibernate + hsqldb:

Estou criando uma aplicacao desktop, que vai utilizar esse configuracao.

Qual deve ser o escopo da sessao do hibernate. Devo cria-la para cada requisicao ou posso deixar uma sessao aberta durante toda a execucao do programa?

Minha duvida em relacao a criar uma sessao para cada operacao eh a performance do sistema, e tbm a questao de que nao vou poder fazer o caminhamento do grafos dos objetos, jah q com a sessao fechada a carga "lazy"nao funciona.

desde ja agradeco a atencao,

Francisco

Se seu banco tem um grande numero de tabela relacionadas, iniciar a a sessão toda vez que a mesma for necessária vai causar um grande degradação da performance.
Apesar de que quando iniciamos uma sessão ela vai para a memoria, e enquanto ela tiver na memoria as outras iniciações seram muito mais rápidas (quase intataneas).
Mas aplicações bem elaboradas não podem contar com o coelho na cartola, eu inicio minha sessão no começo e fecho no fim, mesmo porque eu uso lazy loading, para que os meus objetos não fiquem muito grandes.

Obrigado pela resposta.

So para deixar claro, estamos falando da Session, e nao da SessionFactory?

Outra duvida que tenho eh se o lazy-loading funciona apenas quando existe uma transacao aberta ou mantendo-se a Session aberta ele funciona normalmente?

[]´s
Francisco

com a sessao aberta ele já funciona, porque cria uma transação automaticamente.