Cache do Hibernate

5 respostas
alberto_ribeiro

Bom dia a todos, estou desenvolvendo um trabalho de conclusão de curso e estou fazendo comparações entre o Hibernate e o JDBC, porém o que está acontecendo é que o JDBC está armazenando objetos muito mais rápido que o Hibernate não sei se isso é normal, pois ouvi dizer que, se mexer no cache do Hibernate a performance aumenta. Alguém poderia me dizer como mexer no cache do Hibernate ???

[]'s
Alberto

5 Respostas

Mauricio_Linhares

Cache pra armazenamento?

O Hibernate faz cache de queries e objetos buscados, não de armazenamento. E JDBC vai ser sim mais rápido que o Hibernate.

felipesp

Não sei se há como configurar o cache do hibernate.

Eu tive problemas de carregar muitos objetos, e objetos complexos, em uma messa sessão. Algo do genero:

for (int i = 0; i &lt= lstIdPessoa; i++) {

Integer idDaPessoa = lstIdPessoa.get(i);

Pessoa pessoa = sessaoDoHibernate.get(Pessoa.class, idDaPessoa);

//efetua operações com pessoa

}

No fim do bloco a referencia pessoa deixa de existir e o objeto pessoa pode ser coletado pelo garbage collector, certo? Errado. O objeto para o qual pessoa apontava contina referenciado pela sessaoDoHibernate, e o uso de memória cresce consideravelmente, dependendo do tamanho do objeto pessoa e da quantidade de pessoa, claro.

Dessa forma o tempo de execução do código seguia uma pg.

Resolvemos o problema desassociando pessoa da sessaoDoHibernate assim:

for (int i = 0; i &lt= lstIdPessoa; i++) {

Integer idDaPessoa = lstIdPessoa.get(i);

Pessoa pessoa = sessaoDoHibernate.get(Pessoa.class, idDaPessoa);

//efetua operações com pessoa

sessaoDoHibernate.evict(pessoa);

}

Com isso o tempo de execução diminuiu, em função do uso melhor da memória.

Mauricio_Linhares

Por que em vez de fazer uma coisa bizarra dessas, que é ficar buscando vários objetos que poderiam ser trazidos em uma busca só, você não simplesmente monta uma query que traga eles?

Vai ser bem mais rápido e você vai poder dar fim na sessão sem ter que ficar dando evict de objeto em objeto, além de deixar o seu banco de dados bem menos carregado.

alberto_ribeiro

opa cara achava que podia… (eh santa ignorancia) kkk mais blz valeu pela informação e agora vou pelo menos provar que o hibernate tem como aumentar a performance no cache de objetos…

só uma ultima pergunta onde mexo pra poder aumentar essa performance ??

abçs e valeu pelas informações…

Alberto

alberto_ribeiro

opa no cahe de busca…

Criado 18 de outubro de 2006
Ultima resposta 19 de out. de 2006
Respostas 5
Participantes 3