Fala pessoal,
Peguei um sistema pra fazer manutenção que foi feito com STRUTS 2 e hibernate, uma das coisas q tenho q fazer é resolver o problema de performance no momento do login que demora muito!
Eu não tenho muita experiencia com STRUTS e Hibernate, mas struts achei bem parecido com Spring MVC e ta fácil de me achar, o problema esta sendo com hibernate. No momento da consulta de usuário e senha as queries que o log me mostra que o hibernate ta gerando é gigante fazendo join com um monte de tabela que não tem nada haver e isso ta fazendo ficar muito lento, já fiz testes mudando a consulta, mas nada muda a gigantesca consulta que é feita no banco.
A consulta é feita praticamente assim:
Criteria criteria = session.createCriteria(Aluno.class);
criteria.add(Restrictions.like("usuario", usuario));
criteria.add(Restrictions.like("senha", senha));
criteria.setFetchMode("deposito", FetchMode.JOIN);
criteria.uniqueResult();
tx.commit();
e no meu log é gerada uma consulta gigante assim:
Alguém teria alguma idéia do pq isso ta funcionando, já dei uma estudada no hibernate, tentei fazer formatos de consultas diferentes, relacionamentos na consulta diferente, mas sempre acontece o mesmo, tbm já tentei mexer em algumas configurações no XML do hibernate, mas nada muda essa consulta que é feita.
Eu imagino que o hibernate esta se perdendo na hora de fazer o relacionamento, então vai tentando fazer o relacionamento com varias tabelas tentando achar o JOIN correto, não sei ao certo…
[quote]13:40:46,194 DEBUG C3P0PooledConnectionPool:319 - Test of PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@59e61026] on IDLE CHECK has SUCCEEDED.
13:40:46,195 DEBUG C3P0PooledConnectionPool:315 - Testing PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@5b1d329d] on IDLE CHECK.
13:40:46,203 DEBUG C3P0PooledConnectionPool:319 - Test of PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@74ae8af4] on IDLE CHECK has SUCCEEDED.
13:40:46,213 DEBUG C3P0PooledConnectionPool:319 - Test of PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@6ec44aaf] on IDLE CHECK has SUCCEEDED.
Hibernate: select curso0_.id as id12_2_, curso0_.NOME as NOME12_2_, curso0_.DATA_ENTRADA as DATA3_12_2_, curso0_.LIVRE as LIVRE12_2_, curso0_.url_blog as url5_12_2_, curso0_.url_post_blog_index as url6_12_2_, curso0_.url_post_blog_aula as url7_12_2_, curso0_.ID_ARQUIVO_IMG_GRANDE as ID8_12_2_, curso0_.ID_ARQUIVO_IMG as ID9_12_2_, arquivo1_.ID as ID3_0_, arquivo1_.DATA_ENTRADA as DATA2_3_0_, arquivo1_.NOME_ORIGINAL as NOME3_3_0_, arquivo1_.NOME as NOME3_0_, arquivo1_.FORMATO as FORMATO3_0_, arquivo1_.TAMANHO as TAMANHO3_0_, arquivo1_.RELATIVE_PATH as RELATIVE7_3_0_, arquivo2_.ID as ID3_1_, arquivo2_.DATA_ENTRADA as DATA2_3_1_, arquivo2_.NOME_ORIGINAL as NOME3_3_1_, arquivo2_.NOME as NOME3_1_, arquivo2_.FORMATO as FORMATO3_1_, arquivo2_.TAMANHO as TAMANHO3_1_, arquivo2_.RELATIVE_PATH as RELATIVE7_3_1_ from EAD_CURSOS curso0_ left outer join EAD_ARQUIVOS arquivo1_ on curso0_.ID_ARQUIVO_IMG_GRANDE=arquivo1_.ID left outer join EAD_ARQUIVOS arquivo2_ on curso0_.ID_ARQUIVO_IMG=arquivo2_.ID where curso0_.id=?
13:40:46,302 DEBUG C3P0PooledConnectionPool:319 - Test of PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@5b1d329d] on IDLE CHECK has SUCCEEDED.
Hibernate: select curso0_.id as id12_2_, curso0_.NOME as NOME12_2_, curso0_.DATA_ENTRADA as DATA3_12_2_, curso0_.LIVRE as LIVRE12_2_, curso0_.url_blog as url5_12_2_, curso0_.url_post_blog_index as url6_12_2_, curso0_.url_post_blog_aula as url7_12_2_, curso0_.ID_ARQUIVO_IMG_GRANDE as ID8_12_2_, curso0_.ID_ARQUIVO_IMG as ID9_12_2_, arquivo1_.ID as ID3_0_, arquivo1_.DATA_ENTRADA as DATA2_3_0_, arquivo1_.NOME_ORIGINAL as NOME3_3_0_, arquivo1_.NOME as NOME3_0_, arquivo1_.FORMATO as FORMATO3_0_, arquivo1_.TAMANHO as TAMANHO3_0_, arquivo1_.RELATIVE_PATH as RELATIVE7_3_0_, arquivo2_.ID as ID3_1_, arquivo2_.DATA_ENTRADA as DATA2_3_1_, arquivo2_.NOME_ORIGINAL as NOME3_3_1_, arquivo2_.NOME as NOME3_1_, arquivo2_.FORMATO as FORMATO3_1_, arquivo2_.TAMANHO as TAMANHO3_1_, arquivo2_.RELATIVE_PATH as RELATIVE7_3_1_ from EAD_CURSOS curso0_ left outer join EAD_ARQUIVOS arquivo1_ on curso0_.ID_ARQUIVO_IMG_GRANDE=arquivo1_.ID left outer join EAD_ARQUIVOS arquivo2_ on curso0_.ID_ARQUIVO_IMG=arquivo2_.ID where curso0_.id=?
Hibernate: select curso0_.id as id12_2_, curso0_.NOME as NOME12_2_, curso0_.DATA_ENTRADA as DATA3_12_2_, curso0_.LIVRE as LIVRE12_2_, curso0_.url_blog as url5_12_2_, curso0_.url_post_blog_index as url6_12_2_, curso0_.url_post_blog_aula as url7_12_2_, curso0_.ID_ARQUIVO_IMG_GRANDE as ID8_12_2_, curso0_.ID_ARQUIVO_IMG as ID9_12_2_, arquivo1_.ID as ID3_0_, arquivo1_.DATA_ENTRADA as DATA2_3_0_, arquivo1_.NOME_ORIGINAL as NOME3_3_0_, arquivo1_.NOME as NOME3_0_, arquivo1_.FORMATO as FORMATO3_0_, arquivo1_.TAMANHO as TAMANHO3_0_, arquivo1_.RELATIVE_PATH as RELATIVE7_3_0_, arquivo2_.ID as ID3_1_, arquivo2_.DATA_ENTRADA as DATA2_3_1_, arquivo2_.NOME_ORIGINAL as NOME3_3_1_, arquivo2_.NOME as NOME3_1_, arquivo2_.FORMATO as FORMATO3_1_, arquivo2_.TAMANHO as TAMANHO3_1_, arquivo2_.RELATIVE_PATH as RELATIVE7_3_1_ from EAD_CURSOS curso0_ left outer join EAD_ARQUIVOS arquivo1_ on curso0_.ID_ARQUIVO_IMG_GRANDE=arquivo1_.ID left outer join EAD_ARQUIVOS arquivo2_ on curso0_.ID_ARQUIVO_IMG=arquivo2_.ID where curso0_.id=?
Hibernate: select curso0_.id as id12_2_, curso0_.NOME as NOME12_2_, curso0_.DATA_ENTRADA as DATA3_12_2_, curso0_.LIVRE as LIVRE12_2_, curso0_.url_blog as url5_12_2_, curso0_.url_post_blog_index as url6_12_2_, curso0_.url_post_blog_aula as url7_12_2_, curso0_.ID_ARQUIVO_IMG_GRANDE as ID8_12_2_, curso0_.ID_ARQUIVO_IMG as ID9_12_2_, arquivo1_.ID as ID3_0_, arquivo1_.DATA_ENTRADA as DATA2_3_0_, arquivo1_.NOME_ORIGINAL as NOME3_3_0_, arquivo1_.NOME as NOME3_0_, arquivo1_.FORMATO as FORMATO3_0_, arquivo1_.TAMANHO as TAMANHO3_0_, arquivo1_.RELATIVE_PATH as RELATIVE7_3_0_, arquivo2_.ID as ID3_1_, arquivo2_.DATA_ENTRADA as DATA2_3_1_, arquivo2_.NOME_ORIGINAL as NOME3_3_1_, arquivo2_.NOME as NOME3_1_, arquivo2_.FORMATO as FORMATO3_1_, arquivo2_.TAMANHO as TAMANHO3_1_, arquivo2_.RELATIVE_PATH as RELATIVE7_3_1_ from EAD_CURSOS curso0_ left outer join EAD_ARQUIVOS arquivo1_ on curso0_.ID_ARQUIVO_IMG_GRANDE=arquivo1_.ID left outer join EAD_ARQUIVOS arquivo2_ on curso0_.ID_ARQUIVO_IMG=arquivo2_.ID where curso0_.id=?
…
[/quote]