| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/01/2007 19:40:09
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
flaviomreis wrote:Valeu mister__m e xgucax... alterei o método save e update conforme orientam e alterei-os:
Flavio,
Você precisa chamar o closeSession() em todos os lugares onde abre a Session, em um bloco finally, para que, mesmo se uma exceção seja lançada, a Session seja encerrada corretamente.
Conceitualmente no Hibernate, a Session é uma unit-of-work, ou seja, o seu contexto imutável, em que uma operação lógica de negócios acontece. Então você sempre quer usar uma Session nova e encerá-la corretamente toda vez que fizer uma operação de negócios envolvendo o banco.
O seu problema atual mostra que a mesma Session já leu uma instância de Cliente com a mesma chave e que por um acaso você está usando essa mesma Session no seu código. É isso que você tem que resolver.
Se você usasse o genesis ou o Spring pra gerenciar seu código que interage com o banco, você não estaria lutando com esse problema ainda. Então, ao invés de reescrever seu código pra usar JDBC e baixar o nível, por que não adotar um framework que poderá simplificar seu trabalho daqui pra frente?
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 15:54:14
|
flaviomreis
Debugger
Membro desde: 04/07/2006 09:20:35
Mensagens: 56
Offline
|
Obrigado mister__m... Só pra finalizar então... Se eu utilizar, digamos, springer é certo que eu consiguirei utilizar duas estações, ambas com um programa swing atualizando a base de dados ao mesmo tempo via hibernate e que as atualizações poderão ser percebidas em ambos após uma releitura (select através de HQL)?. Valeu novamente.
|
Flávio Menezes dos Reis
Bacharel em Sistemas de Informação
Terra de Areia - RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:11:18
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
Tanto usando Spring como o genesis - que vai te ajudar em outras coisas no desktop também - você vai resolver seu problema.
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:17:00
|
flaviomreis
Debugger
Membro desde: 04/07/2006 09:20:35
Mensagens: 56
Offline
|
Falou... Mãos a obra então... bora pesquisar... Brigadão mister__m.
[]'s
|
Flávio Menezes dos Reis
Bacharel em Sistemas de Informação
Terra de Areia - RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:32:12
|
flaviomreis
Debugger
Membro desde: 04/07/2006 09:20:35
Mensagens: 56
Offline
|
heheheh...
Antes de partir pro spring modifiquei um DAO para teste, ou seja, coloquei um closeSession ao final de cada método:
De cara, quando precisei obter a Uf (cliente.getUf()) do indivíduo, através de lazy="true", lançou-se a exceção:
Classe Cliente:
Desculpe eu ser insistente, mas o spring ao comportar-se da mesma forma, isto fechando minha sessão a cada uso, também não ocorrerá as famigeradas LazyInitializatioException?
Obrigado novamente
|
Flávio Menezes dos Reis
Bacharel em Sistemas de Informação
Terra de Areia - RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:36:28
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
flaviomreis wrote:Desculpe eu ser insistente, mas o spring ao comportar-se da mesma forma, isto fechando minha sessão a cada uso, também não ocorrerá as famigeradas LazyInitializatioException?
Seguindo o estilo de codificação atual sim, mas isso não tem muito jeito mesmo. Para resolver, você teria que abrir a Session no começo do seu Listener no Swing e fechar antes de retornar dele. Outra solução é forçar a inicialização da UF através do Hibernate.initialize(proxy) ou ainda fazer com que o relacionamento seja eager.
Veja, isso não é um problema novo: na verdade, o uso errado da Session como você vinha fazendo antes é que escondia esse comportamento por gerar, como conseqüência, um cache infinito das coisas.
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:45:06
|
flaviomreis
Debugger
Membro desde: 04/07/2006 09:20:35
Mensagens: 56
Offline
|
Verdade...
Mister... pelo que vejo és um usuário do genesis... Tu não terias como me enviar alguns arquivos de configuração simples do genesis e/ou algum pedaço de código pra eu estudar e adaptar? Ou então alguma referência para estudo... Assim mato de vez meu problema... Valeu mesmo.
|
Flávio Menezes dos Reis
Bacharel em Sistemas de Informação
Terra de Areia - RS |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/01/2007 16:57:15
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
Verifique a documentação sobre a integração com o Hibernate bem como as duas seções anteriores (que você pode acessar pelo menu de navegação à esquerda).
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/07/2009 17:11:42
|
edson_cruz
What is classpath?
Membro desde: 05/06/2009 14:10:08
Mensagens: 8
Offline
|
flaviomreis wrote:Bah... nada é fácil na vida ehehehe (que bom!)... Bom, existe como eu eliminar totalmente os caches do hibernate? Gostaria detestar isto antes de partir para outra solução, porque pelo que to vendo implementar um servidor de dados com RMI não é tão simples assim. Valeu!
Tive o mesmo problema. Resolvi limpando a sessão depois de qualquer alteração e antes de qualquer consulta:
|
|
|
 |
|
|