Hibernate Filter - Duvida basica

Galera, preciso que me tirem três duvidas basicas. Por favor.

1 - Acabei de implementar esse filtro no meu projeto.

https://www.hibernate.org/43.html

Esta funcionando muito bem, porem reparei que não codigo não tem close() esta certo isso? É assim mesmo?

2 - Após começar a usar começei a reparar que tinha horas que o MySQL ficava fora do ar. E não entrava. Tem alguma relação ou só coincidencia??

3 - Após eu deletar uma linha gostaria de mostrar p os usuarios os dados dela. Porem ele só exibe o Id. Tem como fazer isso sem precisar criar um objeto novo??

Obrigado pela ajuda

Cara, pelo que sei esse tipo de filtro não garante que a session seja fechada, vc ainda tem que ter o cuidado de fechar na hora certa. Ele só garante que todo mundo que precise TERÁ uma session disponivel.
Caso vc não esteja fechando a session em nenhum lugar explicitamente com certeza isso deverá lhe trazer problemas, não da pra dizer se esse que vc relatou tem a ver com isso, mas a primeira providencia é identificar aonde e quando as sessions devem ser fechadas.
Quanto a ele só exibir o Id, posta o codigo ai que agente ve.

flw

Egamorim,

Valew, entendi. Então talvez tenha a ve, porque se não fecha a session ela obviamente fica aberta e tenho verificados que após um tempo ficam mtas threads abertas do MySQL.

Eu posso depois do commit fechar a session? Ou isso acarretara problemas e o filter não adiantaria nada??

sf.getCurrentSession().beginTransaction(); chain.doFilter(request, response); sf.getCurrentSession().getTransaction().commit(); sf.close()

Bom o codigo é esse:

user = dao.getUsuariosDAO().read(user.getId()); Usuarios u = new Usuarios(); u.setArea(user.getArea()); u.setBaia(user.getBaia()); u.setId(user.getId()); u.setNome(user.getNome()); u.setRamal(user.getRamal()); request.setAttribute("user", u); dao.getUsuariosDAO().delete(user); String acao = "excluido"; request.setAttribute("acao", acao); return mapping.findForward("okuser");

Se eu faço assim, da certo, porque eu crio um novo objeto, mas se eu não faço isso ele só exibe o Id.

Aproveitando…

Qual a diferença de update, saveOrUpdate e merge??

Valew

Cara, o lance de fechar e abrir session na hora certa não é tão simples quanto parece, ainda mais se tratando de fazer isso na mão, mas pra começar da pra seguir a seguinte regra: Quem abriu fecha depois de usar. ou seja, vc abre a session, faz o que vc quiser fazer com ela, depois fecha logo em seguida, o filter não serve para garantir que a session será fechada, serve pra garantir que vc não tentara salvar alguma coisa por exemplo sem ter uma session, isso já é muito útil. Fazendo na mão, não conheço nada que assegure que a session será fechada com certeza seme que vc tenha que lembrar de fazer isso.
quanto a save e saveOrUpdate, a diferença é que save sempre tenta salvar um novo, saveOrUpdate verifica antes se esse registro ja existe, caso ja exista ele atualiza os dados, se não existir ele salva um novo. “Qual é melhor?” , a resposta pra esta pergunta como na maioria dos casos é Depende. porque cada caso é um caso.
Pra entender o merge vc terá que entender antes a respeito de como o JPA trabalha com gerenciamento de estados. Vou procurar alguma coisa aqui se achar te passo.

flw

http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/

Nesse link vc pode entender o merge.

Esta certo,

Quanto ao delete não jeito mesmo neh? Preciso criar um objeto novo, porque se eu exclui ela dexa de ser persistida e não existe mais, o unico jeito é eu armazanar em outro objeto certo??

[quote=vinicius_roc]Esta certo,

Quanto ao delete não jeito mesmo neh? Preciso criar um objeto novo, porque se eu exclui ela dexa de ser persistida e não existe mais, o unico jeito é eu armazanar em outro objeto certo??[/quote]

cara, desculpa mas eu não entendi o que vc quis dizer. Mas não esqueça de uma coisa, hibernate é uma ferramenta ORM e como tal, faz operações com Objetos no banco de dados (na pratica é mais ou menos isso rsrr). então pra fazer qualquer coisa vc terá que ter um Novo objeto.

mas tente ser mais claro quanto a sua duvida.

Quanto ao merge entendi. Muito obrigado. O update esta me servindo muito bem por enquanto. hehe

Ja a minha duvida acredito que não vou ter escapatória.

O que acontece é que quando o usuario clica para excluir um usuario, por exemplo, eu uso o mesmo objeto que passo como parametro para o delete, uso para mostrar p o usuario. E isto não da certo, porque, acredito que a linha não exista mais. Então passei a criar um novo objeto para exibir os dados para o usuario. Esta certo isso??

[quote=vinicius_roc]Quanto ao merge entendi. Muito obrigado. O update esta me servindo muito bem por enquanto. hehe

Ja a minha duvida acredito que não vou ter escapatória.

O que acontece é que quando o usuario clica para excluir um usuario, por exemplo, eu uso o mesmo objeto que passo como parametro para o delete, uso para mostrar p o usuario. E isto não da certo, porque, acredito que a linha não exista mais. Então passei a criar um novo objeto para exibir os dados para o usuario. Esta certo isso??[/quote]

então, mas vc quer mostrar o conteudo do registro pro usuário depois de excluido ? se sim realmente vc terá que criar de novo, mas isso não é muito comum neh rsrs

Sim, é a minha inteção.

Exibir os dados na tela de confirmação.

Muito obrigado pela ajuda.

Valew