Problema ao adicionar ou remover dados do Banco

10 respostas
exilado

Olá.

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.

10 Respostas

R

Aplicação Web ou Swing ?

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.
Para o problema de lazy, dê uma olhada aqui: Quatro soluções para LazyInitializationException

exilado

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.

Obrigado a todos.

Criado 12 de fevereiro de 2013
Ultima resposta 13 de fev. de 2013
Respostas 10
Participantes 4