Newsgroup: it.comp.java
Titolo: Sintassi HQL di Hibernate

Ciao,
ho appena iniziato ad usare per la prima volta Hiberante, e la cosa
che più mi serve capire al momento, è come si costruiscono le query,
visto che utilizza l'HQL!!!
Avete dei link,in italiano(possibilmente) da darmi che spiegano questo
linguaggio?
Esiste un editor?Ed un programma di conversione da SQL in HQL(sarebbe
il massimo!!)?
Grazie
Nik


non so se possa aiutarti ma Hibernate permette anche di usare sql...


SI ma se usi SQL in Hibernate escludi Hibernate.
Non ha molto senso la cosa , di fatto ti tiri addosso un framework e non hai
vantaggi.
Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

On 18 Feb, 15:25, 
n...@libero.it
 (n.n) wrote:

perche'? Hibernate e' tool per la persistenza degli oggetti e, salvo
casi aprticolari (tipo una query bella grossa) lasci a lui il compito
di scrivere le istruzioni SQL usando Criteria API.
Io forse ho capito male la domanda (o ho capito male Hibernate (il che
non lo escludo :-) ) ma pensavo che cutoff intendesse cmoe fare in una
delle poche situazioni in cui devo scrivere del SQL in contensto in
cui si arriva al DB tramite Hibernate.

 cui si arriva al DB tramite Hibernate.
Dalla documentazione
http://www.hibernate.org/hib_docs/v3/reference/en/html/querysql.html
sess.createSQLQuery("SELECT * FROM CATS").list();
sess.createSQLQuery("SELECT * FROM CATS")
 .addScalar("ID", Hibernate.LONG)
 .addScalar("NAME", Hibernate.STRING)
 .addScalar("BIRTHDATE", Hibernate.DATE)
e anche questa
sess.createSQLQuery("SELECT * FROM CATS")
 .addScalar("ID", Hibernate.LONG)
 .addScalar("NAME")
 .addScalar("BIRTHDATE")
Qyeste qyery equivalenti di fatto non possono persistere nulla perche'
trattano liste di oggetti scalari.
-------------------------
Per persistere in SQL tocca assegnare l'entita' di uscita "a mano"
sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
che si complica
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM
CATS c, DOGS d WHERE c.ID = d.CAT_ID")
 .addEntity("cat", Cat.class)
 .addJoin("cat.dogs");
qualora vuoi relazionare
 e
SCRITTO ROSSO SUL LIBRO
<p>At this stage we are reaching the limits of what is possible with native
queries without starting to enhance the sql queries to make them usable in
Hibernate; the problems starts to arise when returning multiple entities of
the same type or when the default alias/column names are not enough.</p>
lascio a te procedere col capitolo
"Returning multiple entities"
in pratica le cose vanno complicandosi sempre piu' mano a mano che si
complica la query
quindi non ha molto senso usare SQL per semplificare, almeno a mio avviso, a
meno che non si ritornano scalari, che non sono persistentizzabili, e quindi
si puo' fare a meno di usare hibernate stesso visto che a a sto punto
diventa un impiastro inutile.
Se ho detto inesattezze mi raccomando segnalatelo che queste discussioni
servono a tutti per chiarire le scelte architetturali :-)
Ciao Nicola


 Dalla documentazionehttp://
www.hibernate.org/hib_docs/v3/reference/en/html/querysql.html

Sei stato molto chiaro... io parecchio meno :-)
Premetto che sono completamente d'accordo con te sull'uso di SQL/HQL.
Io in Hibernate credo che la cosa migliore sia usare i un bel file xml
di mapping, dei cari vecchi bean e i criteria per lasciare tutto il
lavoro ad Hibernate. Se poi esiste un caso un cui serve una query
particolare allora possiamo scegliere tra HQL (Scelta fortemente
consigliata) e SQL. Io ho immaginato l'autore di questa domanda
"spaventato" dal dover imparare una nuova sintassi per effettuare le
query piu' complesse e, per invogliarlo ad usare questo framework che
reputo molto valido, lo volevo solo tranquillizzare dicendogli che in
caso di emergenza poteva ricorrere al noto SQL.
Effettivamente mi rendo conto ora che il mio e' stato un intervento un
po' troppo "alla leggera".

 non so se possa aiutarti ma Hibernate permette anche di usare sql...
io suggerirei più volentieri l'uso delle query usando i Criteria:
http://www.hibernate.org/hib_docs/reference/en/html/querycriteria.html
considerando che ci sono metodi per introdurre restrizioni in sql
nativo (che a mio modesto avviso sono i motivi più frequenti per cui
ci può essere necessità di ricorrere al sql nativo).
oltre al fatto che è veramente comodo in generale.