2009-11-29 1 views
6

ho notato che Hibernate genera diversi alias per le stesse colonne ogni volta che provo ad accedere allo stesso tavolo:Hibernate, alias

Hibernate: select person0_.id as id0_0_, person0_.nam as nam0_0_, person0_.fam as fam0_0_, person0_.otc as otc0_0_ from web_db.Person person0_ where person0_.id=? 
Hibernate: select person0_.id as id4_0_, person0_.nam as nam4_0_, person0_.fam as fam4_0_, person0_.otc as otc4_0_ from web_db.Person person0_ where person0_.id=? 

Esiste un modo per arrivare al letargo per generare alias identici per query identiche? Per esempio:

Hibernate: select person0_.id as id0_0_, person0_.nam as nam0_0_, person0_.fam as fam0_0_, person0_.otc as otc0_0_ from web_db.Person person0_ where person0_.id=? 
Hibernate: select person0_.id as id0_0_, person0_.nam as nam0_0_, person0_.fam as fam0_0_, person0_.otc as otc0_0_ from web_db.Person person0_ where person0_.id=? 
+1

Perché ti importa? –

+2

Perché? L'intero punto di utilizzo di Hibernate è di avere la gestione della mappatura ORM. Preoccuparsi per gli alias utilizzati senza alcuna spiegazione sembra un piccolo OCD ..;) – Tim

+0

Una ragione è che alcuni database non riescono a ottimizzare le query a causa di questo. Un altro è che MySQL Enterprise Monitor non riesce a riconoscere che queste query sono le stesse nel Query Analyzer. – antonagestam

risposta

4

Dai un'occhiata alla HHH-2448 che copre questo argomento e ha una patch per la generazione di alias deterministico.

-1

Risposta breve: no

Perché?
Questo è il punto non è vero? Si è astratti dalle dichiarazioni di query effettive.

+5

Inoltre, si è astratti dal fatto che Oracle consideri queste due diverse istruzioni SQL, causando un difficile parsing e una diminuzione delle prestazioni. – ObiWanKenobi

2

In primo luogo, sto usando Oracle 9i.

Diverse query provocano l'analisi del server. Se ci sono molte query di questo tipo, la responsabilità del server database è in calo. Dobbiamo usare le variabili di binding per evitare questo problema.

+1

Questa è una risposta? Non utilizzare le risposte per inserire commenti/dettagli, aggiorna la tua domanda. –

2

In ogni caso, la mia soluzione - query denominate, dove io mi specificare come selezionare i dati in modo esplicito ...