onde criar objetos do hibernate (session, configuration, )  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Estou iniciando uma aplicação em java+swing.
Onde instancio os objetos do hibernate?
Já chamo no método main?
Sei que tenho que criar um Configuration, obter um SessionFactory, mas não sei em que parte do código fazer isso.
No meu código eu tenho vários GerenciadorXxxx para deletar, salvar, e carregar objetos. Neles irá ficar o código de acesso ao hibernate, mas creio que não é bom criar configuration e sessionfactory a cada vez que eu precisar.
Como isso é feito normalmente?
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

ronaldorezende wrote:Já chamo no método main?


Nunca! No main só vai o mínimo possível para iniciar a aplicação.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

então onde seria?
santanajr
Smalltalk

Membro desde: 13/04/2005 11:05:55
Mensagens: 1
Offline

É importante você estudar um pouco mais sobre MVC para que você possa dividir sua aplicação em camadas.

Respondendo sua pergunta, você pode criar uma classe que contenha métodos para controle e manipulação dos dados usando o hibernate. Essa classe pode funcionar como um componente DAO.

http://www.onjava.com/pub/a/onjava/2004/01/14/hibernate.html
[Email] [MSN]
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Crie uma classe DAO, ela será responsável por isso, além de ser responsável por todas as operações envovendo aplicação <--> Banco de Dados

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

E respondendo a outra pergunta: sim, deve criar apenas 1 sessionFactory e compartilhar a mesma para toda a aplicação. Pode fazer isso simplesmente declarando a variável como estática caso a lógica de acesso a dados fique no cliente.

Former LIPE.
[ICQ]
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Minha aplicação já é dividida em MVC. Tenho objetos de negócios como GerenciarCliente, que irão acessar o hibernate para salvar, e carregar objetos.
Quero saber quando eu devo instânciar o sessionFactory e o configuration e onde armazenar os objetos. Onde eu devo criar uma variável estática?
Tem alguma estratégia ou padrão para isso? Devo criar alguma classe que fará esse trabalho de criar o configuration e objeto session?
Nos exemplos que já vi, sempre são aplicações simples que fazem isso tudo no método main da aplicação. No manual do hibernate não diz exemplos de onde fazer isso.
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Uma idéia é voce carregar o Configuration e o SessionFactory em uma classe DAO e deixar o SessionFactory como static...

esse DAO pode ser carregado quando você abrir seu sistema Swing em cada cliente

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Mas em cada classe DAO eu teria a instanciação do Configuration e do SessionFactory?
Nâo seria melhor eu ter a criação do configuration em apenas 1 local e nesse local eu adicionar todos os mapeamentos das classes que serão persistidas?

Eu terei dezenas de facades no meu programa. Cada façade irá persistir algumas. O facade GerenciadorCliente irá persistir o orçamento do cliente e os itens do orçamento.

Mas, pelo que entendi, o meu GerenciadorCliente, deve usar uma Sessao que já foi criada por um sessionFactory. Seria isso? Então, no sistema teria apenas uma instância do SessionFactory e da configuration.
Então, quando eu criaria esses objetos e onde armazenaria as referências?
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Você terá apenas uma classe de DAO pai, e nela seu objeto SessionFactory será estático
por exemplo


Os Maps você pode por ae dentro, ou senão no arquivo hibernate.conf.xml, eu particularmente prefiro deixar em arquivo do que na classe...

Agora seus outros DAO, poderiam extender esse dao, por exemplo



O SessionFactory vc terá apenas 1, mas o Session você inicia e fecha ele em cada operação.

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Ok, obrigado. É isso que eu queria saber.
Vou só adaptar o seu exemplo ao meu caso, pois eu não uso DAO. Uso algo que será parecido com seus DAO, que são meus objetos Gerenciadores, como GerenciadorCliente.
Vou criar uma classe para fazer o papel da sua classe DAO e manter uma instância estática da factory.

Quando e por quem o initialization() será executado?
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Pode ser executado quando sua aplicação Swing for iniciada...

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Quanto a esse arquivo hibernate.conf.xml, eu não sei a respeito dele. Estou lendo o manual do hibernate e uma das formas de mapear foi:



Ainda não vi como usar o arquivo hibernate.conf.xml. Com esse arquivo fica mais fácil? Qual o procedimento para usar ele?
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

desculpe, o certo é hibernate.cgf.xml

vc pode ler mais aqui
http://www.hibernate.org/hib_docs/v3/reference/en/html/session-configuration.html#configuration-xmlconfig

a diferença é que se vc adicionar novas classes, nao precisa adicionar no seu Configuration, e sim nesse arquivo, eu acho melhor e mais flexivel

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team