Olá,
Trabalho com desenvolvimento Java voltado a Web utilizando basicamente JSP/Velocity e Servlet a algum tempo. Comecei a estudar o hibernate o conhecendo pelo site theserverside. Quando fui pesquisar por referências brasileiras, encontrei um tutorial aqui nesse site, e o melhor de tudo, um fórum bastante movimentado.
Por isso venho até aqui, e peço ao pessoal que trabalha com essa framework, para me tirar uma dúvida simples.
Nos meus projetos atuais, eu utilizo o Patterns DAO, para centralizar todas as conexões em um único objeto. Esse objeto é guardado na sessão, assim podendo navegar por vários arquivos .jsp, .vm e .java e posso acessá-lo normalmente.
Estudando o hibernate, verifiquei que também há a necessidade de criar uma classe DAO, onde irei criar objetos SessionFactory que serão usadas com os Sessions. Inicialmente pensei em fazer o mesmo esquema, ou seja, instancio o objeto DAO e jogo ele para a sessão, e no outro arquivo eu recupero ele e volto a trabalhar normalmente. Mas nesse ponto que surge a dúvida.
Pelo que eu verifiquei, eu tenho duas opções de DAO, a primeira é criar um DAO para cada objeto que será persistido (como o tutorial que eu vi do site), ou senão criar um DAO e dentro desse DAO passar qual objeto eu irei trabalhar (podendo ser pelo construtor).
Minha dúvida nesse caso "Em cada arquivo que eu abrir, por exemplo clientes, produtos, fornecedores, etc, eu terei que ter um objeto DAO diferente, certo? E a primeira vez que eu crio esse objeto DAO, o hibernate acredito que mapeia o arquivo hbm.xml do objeto que eu irei trabalhar e deixa a performance lenta. Isso que eu estou falando procede? ou se eu carregar por exemplo um objeto na tela de clientes, eu posso jogar ele para sessão e depois na tela de produtos por exemplo, recuperar esse objeto e trabalhar ele como sendo um DAO de produtos?
Pelo que pareceu, esse lance de DAO, faz com que eu precise criar vários DAOs, assim ficando meio estrnaho a minha arquitetura e talves diminuindo a performance na primeira vez que o usuário entra no sistema (falei muita besteira? :oops: )