Hibernate Travando

1 resposta
worldsoft

Boa tarde,

Bom estou a fazer uma simples consulta ao banco de dados quando um usuário digita algo em um campo de pesquisa, mais toda vez que o usuário digita do 15º caractere a aplicação trava, e não consigo descobrir o por que, por isso estou recorrendo a vocês.

Vou colocar um Hibernate.cfg.xml para ajudar:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
    <property name="connection.url">jdbc:firebirdsql:localhost/3050:c:\projeto2\bd\SISAF2000.GDB</property>
    <property name="connection.username">SYSDBA</property>
    <property name="connection.password">masterkey</property>
    <property name="dialect">org.hibernate.dialect.FirebirdDialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>

    <!-- Condiguração do c3p0 -->
    <property name="hibernate.c3p0.max_size">10</property>
    <property name="hibernate.c3p0.min_size">2</property>
    <property name="hibernate.c3p0.timeout">5000</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>
    <property name="hibernate.c3p0.acquire_increment">2</property>
    <!-- Configurações de debug -->    
    <property name="format_sql">true</property>
    <property name="hibernate.generate_statistics">true</property>
    <property name="hibernate.use_sql_comments">true</property>
    <!-- Mapeamento das classes persistidas no sistema -->
    <mapping class="br.com.pj.projeto2.model.Cliente"/>
  </session-factory>
</hibernate-configuration>

E a consulta é da seguinte forma:

Session session = HibernateUtil.getSessionFactory().openSession();
        Criteria criteria = session.createCriteria(Cliente.class);
        Disjunction ou = Restrictions.disjunction();
           ou.add(Restrictions.ilike("nome", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("endereco", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("bairro", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("email", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("contato", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("cidade", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("estado", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("profissao", valor.toLowerCase(), MatchMode.ANYWHERE))
              .add(Restrictions.ilike("empresa", valor.toLowerCase(), MatchMode.ANYWHERE));                  
        List<Cliente> lista = criteria.add(ou).list();

1 Resposta

calel

Minha unica idéia é que o hibernate está esperando por uma conexão livre…
Pra testar isso, troque o openSession por getCurrentSession ou feche a sessão após o uso.

Essa pesquisa que você faz é parecida com um autocomplete ?

Criado 19 de fevereiro de 2012
Ultima resposta 19 de fev. de 2012
Respostas 1
Participantes 2