Duvida com consultas HQL!?

5 respostas
L

Boa tarde galera…

Estou desenvolvendo uma aplicação aqui e estou usando pela 1ª vez o hibernate.

Gostaria de saber como mapear um arquivo de consultas HQL no meu hibernate.cfg.xml…

Hoje eu tenho ele da seguinte forma:

<?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="hibernate.bytecode.use_reflection_optimizer">false</property>

        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

        <property name="hibernate.connection.password">admin</property>

        <property name="hibernate.connection.url">jdbc:oracle:thin:@10.74.9.113:1521:XE</property>

        <property name="hibernate.connection.username">system</property>

        <property name="hibernate.default_schema">HR</property>

        <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>

        <mapping file="br/com/brt/correspondencia/vo/Projeto.hbm.xml" />

        <mapping resource="br/com/brt/correspondencia/vo/Funcionario.hbm.xml" />

        <mapping resource="br/com/brt/correspondencia/vo/Cliente.hbm.xml" />

              

    </session-factory>

</hibernate-configuration>

Dentro de Funiconario.hbm.xml eu tenho algo assim:

<hibernate-mapping>

    <class name="br.com.brt.correspondencia.vo.Funcionario" table="FUNCIONARIO">

        <id name="id" type="big_decimal">

            <column name="ID" scale="0" />

            <generator class="assigned" />

        </id>

        <property name="nome" type="string">

            <column name="NOME" length="10" not-null="true" />

        </property>

        <property name="endereco" type="big_decimal">

            <column name="ENDERECO" scale="0" not-null="true" />

        </property>

    </class>

    

    <query name="busca">

    <![CDATA[from Funcionario f]]>

    </query>

    

</hibernate-mapping>

O que eu gostaria de fazer é transferir todas as minhas “query name”, para um outro arquivo xml.
Essa seria a melhor maneira de fazer as minhas consultas?!
Pq deixar as consultas espalhadas pelos meus arquivos de mapeamento (hbm) me parece meio bagunçado!

5 Respostas

_fs

Quem usa este recurso o faz normalmente com queries mais complexas para aproveitar o query-cache do Hibernate.

Mas no caso de queries simples como esta que apresentou realmente não faz sentido. Basta fazer em seu código:

session.createCriteria( Funcionario.class ).list();
L

mas na verdade, eu so postei um exemplo simples para especificar o que eu quero…
pq eu vou ter muitas querys (simples e complexas - chatas)… e por isso que eu queria fazer assim…

pq daquele jeito que eu mostrei é so chamar a consulta pelo name “busca”…

Como eu faço dessa maneira que vc comentou?

_fs

De fato não respondi sua dúvida. Não sei de uma forma para colocar as queries todas em um arquivo só.

Sobre sua outra pergunta, estude a API de Criteria - usá-la torna suas queries muito mais limpas e fáceis de debugar:
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#querycriteria

L

valeu LIPE… vou dar uma olhada…
:smiley:

Icavalera

Alguem ae ja viu alguma aplicação que rode desse jeito, com as "querys " todas dentro de um so arquivo???

Qual seria a melhor maneira a se seguir? As “querys” separadas em vários arquivos “HBM” ou em um arquivo “java” DAO???

Criado 16 de abril de 2007
Ultima resposta 17 de abr. de 2007
Respostas 5
Participantes 3