Olá Pessoal,
estou desenvolvendo uma aplicação para o meu TCC e venho dando uma minerada nas consultas ao BD pois a persistência apresenta uma lentidão incomum em alguns casos.
Estou desenvolvendo minha aplicação com Hibernate + Mysql, inclusive inseri o c3p0, porém não há necessidade do mesmo visto que minha aplicação será executada apenas em um desktop.
O problema é o seguinte, eu ativei a seguinte propriedade no meu hibernate.cfg.xml:
true
Assim posso visualizar as consultas feitas pelo hibernate enquanto a aplicação é executada, o problema é que há consultas de mais sendo feitas pelo hibernate e não por mim, como no exemplo do código abaixo:
Linha de código na qual faço apenas uma consulta:
Obs: Só para realizar este teste, criei um contador na classe AbstractDAO para contar cada vez que iniciava/reiniciava uma sessão. No resultado será possível ver que só reiniciei uma sessão uma única vez entre todas essas consultas feitas pelo hibernate.
System.out.println("TESTE14");
System.out.println("AbstractDAO Contador = " + AbstractDAO.contador);
//Verifica se System User já tem seus acessos configurados
List<Acessos> listAcessos = AbstractDAO.consultar("Acessos", "idAgente=" + user.getIdAgente());
System.out.println("AbstractDAO Contador = " + AbstractDAO.contador);
System.out.println("TESTE141");
Resultado, ou seja, todas as consultas feitas entre o tempo em que imprimi TESTE14 até TESTE141 (gerado pelo código acima):
Obs: Na minha opnião era pra ter feito apenas uma consulta.
TESTE14
AbstractDAO Contador = 2
Hibernate: select acessos0_.idAcesso as idAcesso12_, acessos0_.idAgente as idAgente12_, acessos0_.idPermissao as idPermis3_12_, acessos0_.acesso as acesso12_ from smid_server.acessos acessos0_ where idAgente=1
Hibernate: select agente0_.idAgente as idAgente4_0_, agente0_.codigo as codigo4_0_, agente0_.nome as nome4_0_, agente0_.ativo as ativo4_0_, agente0_.login as login4_0_, agente0_.senha as senha4_0_, agente0_.dataNascimento as dataNasc7_4_0_, agente0_.telefone as telefone4_0_, agente0_.dataCadastro as dataCada9_4_0_, agente0_.horaCadastro as horaCad10_4_0_ from smid_server.agente agente0_ where agente0_.idAgente=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select permissao0_.idPermissao as idPermis1_7_0_, permissao0_.nome as nome7_0_ from smid_server.permissao permissao0_ where permissao0_.idPermissao=?
Hibernate: select transacaoa0_.idagente as idagente1_, transacaoa0_.idTransacaoAgente as idTransa1_1_, transacaoa0_.idTransacaoAgente as idTransa1_11_0_, transacaoa0_.idagente as idagente11_0_, transacaoa0_.nomeTransacao as nomeTran3_11_0_, transacaoa0_.data as data11_0_, transacaoa0_.hora as hora11_0_ from smid_server.transacaoagente transacaoa0_ where transacaoa0_.idagente=?
Hibernate: select boletimtra0_.idAgente as idAgente1_, boletimtra0_.idBoletimTratamento as idBoleti1_1_, boletimtra0_.idBoletimTratamento as idBoleti1_5_0_, boletimtra0_.idAgente as idAgente5_0_, boletimtra0_.idLocalidade as idLocali3_5_0_, boletimtra0_.idMunicipio as idMunici4_5_0_, boletimtra0_.coordenadorRegional as coordena5_5_0_, boletimtra0_.grs as grs5_0_, boletimtra0_.categoria as categoria5_0_, boletimtra0_.turma as turma5_0_, boletimtra0_.data as data5_0_, boletimtra0_.semanaEpid as semanaEpid5_0_, boletimtra0_.numeroAtividade as numeroA11_5_0_, boletimtra0_.tipoAtividade as tipoAti12_5_0_, boletimtra0_.sincronizadoEm as sincron13_5_0_, boletimtra0_.ativo as ativo5_0_ from smid_server.boletimtratamento boletimtra0_ where boletimtra0_.idAgente=?
Hibernate: select acessoses0_.idAgente as idAgente1_, acessoses0_.idAcesso as idAcesso1_, acessoses0_.idAcesso as idAcesso12_0_, acessoses0_.idAgente as idAgente12_0_, acessoses0_.idPermissao as idPermis3_12_0_, acessoses0_.acesso as acesso12_0_ from smid_server.acessos acessoses0_ where acessoses0_.idAgente=?
Hibernate: select boletimpes0_.idAgente as idAgente1_, boletimpes0_.idBoletimPesquisa as idBoleti1_1_, boletimpes0_.idBoletimPesquisa as idBoleti1_9_0_, boletimpes0_.idAgente as idAgente9_0_, boletimpes0_.idLocalidade as idLocali3_9_0_, boletimpes0_.idMunicipio as idMunici4_9_0_, boletimpes0_.coordenadorRegional as coordena5_9_0_, boletimpes0_.grs as grs9_0_, boletimpes0_.categoria as categoria9_0_, boletimpes0_.turma as turma9_0_, boletimpes0_.data as data9_0_, boletimpes0_.semanaEpid as semanaEpid9_0_, boletimpes0_.numeroAtividade as numeroA11_9_0_, boletimpes0_.liAmostra as liAmostra9_0_, boletimpes0_.tipoAtividade as tipoAti13_9_0_, boletimpes0_.sincronizadoEm as sincron14_9_0_, boletimpes0_.ativo as ativo9_0_ from smid_server.boletimpesquisa boletimpes0_ where boletimpes0_.idAgente=?
AbstractDAO Contador = 3
TESTE141
Método de consulta na classe AbstractDAO:
public static List consultar(String nomeObjeto, String condicao) {
try {
inicializaSessao();
transacao = sessao.beginTransaction();
List list = sessao.createQuery("from " + nomeObjeto + " where " + condicao).list();
return list;
} catch (Exception er) {
er.printStackTrace();
return null;
} finally {
fechaSessao();
}
}