2009-11-29 8 views
6

me di cuenta de que Hibernate genera diferentes alias para las mismas columnas cada vez que intento acceder a la misma mesa: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=? 

¿Hay alguna manera de llegar a hibernar para generar alias idénticos para consultas idénticas? Por ejemplo:

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

¿Por qué te importa? –

+2

¿Por qué? El objetivo de utilizar Hibernate es hacer que administre su mapeo ORM. Preocuparse por los alias utilizados sin ninguna explicación parece un poco OCD ...;) – Tim

+0

Una razón es que algunas bases de datos no pueden optimizar las consultas debido a esto. Otra es que MySQL Enterprise Monitor no reconoce que estas consultas son las mismas en el analizador de consultas. – antonagestam

Respuesta

4

Tenga una mirada en HHH-2448 que cubre este tema y tiene un parche para la generación de alias determinista.

-1

Respuesta corta: No.

¿Por qué?
Ese es el punto, ¿no? Usted está abstraído de las declaraciones de consulta reales.

+5

Y también se abstrae del hecho de que Oracle considera estas dos declaraciones SQL diferentes, lo que provoca un análisis riguroso y una disminución en el rendimiento. – ObiWanKenobi

2

Primero, estoy usando Oracle 9i.

Las diferentes consultas hacen que el servidor haga un análisis detallado. Si hay muchas consultas de este tipo, la responsabilidad del servidor de la base de datos se está cayendo. Tenemos que usar variables de vinculación para evitar este problema.

+1

¿Es esta una respuesta? No use respuestas para publicar comentarios/detalles, actualice su pregunta en su lugar. –

2

De todos modos, mi solución - consultas con nombre, donde voy a especificar cómo seleccionar los datos de forma explícita ...