2010-11-12 27 views
5

Estoy enseñando a auto hibernar, y estoy bastante confundido de por qué no puedo simplemente escribir consultas SQL simples.HQL contra SQL/Hibernate netbeans Editor HQL

me resulta bastante más complicado de usar que SQL normal (lo que estoy acostumbrado a)

PLUS: El editor NetBeans HQL encontré bastante molesto, es más difícil para mí para producir una consulta justo en HQL, luego en SQL, y ¿por qué el SQL mostrado difiere de las declaraciones SQL reales?

¿Por qué usarlo? - Como es sabido, hibernar es muy extenso en recursos, y creo que hibernar es la razón por la que nuestra aplicación se queda sin memoria muy a menudo, como durante el proceso de redespliegue, por ejemplo ...

Estoy muy interesado en conocer ¿Por qué debería usar declaraciones Hibernate y no simples SQL (mysql)?

Y tal vez un buen enlace para las consultas de hibernación sería bueno;), estoy usando éste atm:

Pero también interesado en cualquier buen enlace que explica la configuración de la consultas, la cartografía, etc .. subyacentes construcción

Best Regards Alex

Respuesta

3

HQL está orientado a objetos y se hace con el propósito de trabajar en los objetos Java que representan sus tablas de bases de datos. Una ventaja básica es que puede poner marcadores de posición como :orderNumber (usando los dos puntos simbol) en la consulta HQL y reemplazarlos con el valor de una variable. Por ejemplo:

int orderNumber = 685412; 
List<Order> l= 
    session.createQuery("from Order where orderNumber = :orderNumber") 
    .setParameter("orderNumber",orderNumber).list(); 

De esta manera se puede modificar orderNumber de una manera sencilla, evoiding la clásica

String query = "select * from Order where orderNumber = " + orderNumber + "..."; 

Cabe agregar utilizando la sintaxis de MySQL a veces convertir su código no reutilizable si migra su base de datos a otro DBMS. De todos modos, todavía no estoy tan convencido de la preferencia en HQL.

Here puede encontrar la definición completa de la gramática.

+0

gracias por eso. - ¡Simplemente otra pregunta, por lo que cada archivo .hbm.xml tiene un archivo java correspondiente, que solo necesita tener el mismo nombre correcto! - y si quiero escribir una consulta, que involucra hasta tres tablas, ¿tengo que escribir ese enlace en cada consulta o puedo escribir una función java o similar para hacer eso para cada consulta, como un archivo helper.java ! –

+0

tal vez alguien pueda decirme más sobre la configuración de los archivos, ya que estoy tratando de entender una aplicación web existente (cyclos) que es muy completa. Ahora incluyen tantos archivos java para manejar el acceso a db, que me resulta difícil seguir el flujo. ¿Qué usarías? Ejemplos de archivos de ejemplo.java, p. ?? –

+0

- "cada archivo .hbm.xml tiene un archivo java correspondiente, que solo necesita tener el mismo nombre" -> Sí; tal vez no sea necesario el mismo nombre (no estoy seguro), pero es muy recomendable. En hibernate.cfg.xml, debe colocar las entradas de asignación, como esta bluish