Desenvolvi um pequeno sistema para controle de visitas porem ele está apresentando o seguinte problema:
quando eu apago ou adiciono alguma informação a alteração é feita no banco de dados porem a aplicação não é atualizada.
Ex. caso eu apague um vendedor, no banco ele some, porem na aplicação ele ainda é apresentado e só some quando eu fecho o sistema e abro novamente.
Obs. estou utilizando uma classe para controlar os acessos ao banco de dados, para não abrir muitas conexões com o mesmo. e tambem estou utilizando o Hibernate para realizar a persistência.
Voce atualiza tambem o componente onde esses dados sao mostrados ?
Hebert_Coelho
rof20004:
Aplicação Web ou Swing ?
Voce atualiza tambem o componente onde esses dados sao mostrados ?
Exato. Você está atualizando a lista e o componente que exibe os dados?
exilado
A aplicação é Swing.
a atualização ocorre normalmente.
Percebi que o problema só ocorre onde há o mapeamento one-to-many.
Ex quando eu recupero as visitas de um empresa, se eu adicionar ou remover uma visita a alteração é feita no banco mas não na aplicação, no caso da exclusão, quando eu listo as visitas e tento abrir uma que eu exclui retorna um erro do banco de dados falando que o registro não existe.
exilado
Descobri que se eu remover a classe que controla o acesso ao banco de dados, deixando que cada DAO faça isso, este problema é resolvido porem é gerado o problema de LazyInitializationException ao tentar acessar os dados da relação one-to-many, sem falar que ai a aplicação abre diversas sessões com o banco de dados.
Hebert_Coelho
exilado:
Descobri que se eu remover a classe que controla o acesso ao banco de dados, deixando que cada DAO faça isso, este problema é resolvido porem é gerado o problema de LazyInitializationException ao tentar acessar os dados da relação one-to-many, sem falar que ai a aplicação abre diversas sessões com o banco de dados.
Eu ja tinha o conhecimento desse post, pois tive problema de lazy antes e graças a ele eu conssegui resolver, e por isso estou utilizando uma classe para cotrolar o acesso ao BD, ou seja estou utilizando a solução “Open Session in View”, porem acontece oproblema dele não atualizar o lazy quando um item é adicionado ou removido do banco, mas quando eu atualizo algum já existente o lazy tambem é atualizado.
Rodrigo_Sasaki
exilado:
Descobri que se eu remover a classe que controla o acesso ao banco de dados, deixando que cada DAO faça isso, este problema é resolvido porem é gerado o problema de LazyInitializationException ao tentar acessar os dados da relação one-to-many, sem falar que ai a aplicação abre diversas sessões com o banco de dados.
São tantas sessões assim mesmo? Realmente está sentindo o impacto na aplicação?
Não podemos esquecer a frase do Knuth: “premature optimization is the root of all evil”
exilado
São tantas sessões assim mesmo? Realmente está sentindo o impacto na aplicação?
Não podemos esquecer a frase do Knuth: “premature optimization is the root of all evil”
Mas se eu deixar gerar diverssas sessões gera o problema de Lazy que mancionei.
Rodrigo_Sasaki
Lazy initialization não tem nada a ver com o número de sessões.
Se você quiser manter uma sessão aberta, não vai ter que se preocupar com isso, mas isso pra mim que está errado. O correto seria abrir a sessão, fazer a operação necessária, e fechá-la
exilado
Consegui resolver passando o controle das sessões para cada DAO mesmo.
até o momento ainda não tive o problema de Lazy.