Performance JBoss + JSF + JPA + Spring

4 respostas
tiago_86

Boa tarde!

Em minha aplicação exite um método com loop que executa algumas namedqueries e persiste alguns objetos. Esse método esta muito lento. Para testar criei uma aplicação java simples com spring e jpa mas sem JBoss e chamei o método de lá … constatei que o tempo de cada iteração do loop é constante (alguns milisegundos) e a performance ficou excelente.

Mas chamando esse mesmo método da aplicação web com JBoss + JSF (que será o ambiente real da aplicação) o tempo de cada iteração do loop vai aumentando … no começo o tempo de cada iteração do loop é semelhante ao da aplicação sem o container, mas depois vai aumentando cada vez mais e acaba ficando muuuuito lento depois de um tempo … eu não manjo quase nada de JBoss, mas ta dando a impressão de que a cada iteração do loop alguma coisa esta inchando e deixando cada vez mais lento o processo …

Alguém já passou por isso ou poderia me dar alguma dica ??? será que é o Jboss mesmo que causa essa lentidão ???

Valewww ae

4 Respostas

V

Tiago,

Durante o loop, seus objetos estão no estado de gerenciado do hibernate.
Você deverá a cada x iterações chamar o flush e o clear do hibernate.

tiago_86

putz victor na mosca !!! :smiley:

o flush não funcionou … deu exception de transação requerida (acho que é porque to usando spring e ele que ta gerenciando as transações) mas deixando somente o clear a cada X iterações funcionou certinho :smiley: :smiley: … logo depois do clear, o tempo das iterações seguintes cairam muito … valew mesmo cara
agora só queria entender, o flush encerra as transações e o clear limpa os objetos gerenciados pelo hibernate, certo ?!? e existe algum problema em usar somente o clear ?!!?

valeww

V

Tiago,

O flush sincroniza o banco de dados com os seus objetos. Não sei como funciona com spring, mas é estranho pq quando se chama clear sem chamar anteriormente o flush todas as alterações feitas nos seus objetos são perdidas. Dá uma confirida para ver se os objetos foram relamente persistidos.

tiago_86

então victor, fiz alguns testes e o engraçado é que os objetos foram persistidos normalmente … eu hein hehe
mas mesmo assim vou dar uma pesquisada sobre a exception que ocorreu quando tentei o flush … caso eu consiga alguma coisa eu posto aqui.

Criado 1 de outubro de 2008
Ultima resposta 2 de out. de 2008
Respostas 4
Participantes 2