2011-10-14 10 views
26

Estoy usando hibernate y quería usar consultas con nombre. pero no sé si es una buena solución o no? por favor bríndeme las ventajas de consultas con nombre.Ventajas de las consultas con nombre en hibernate?

¿Cuándo se compilan consultas con nombre? ¿podemos cambiar directamente la consulta con nombre en el archivo hbm que se implementa en el servidor de aplicaciones?

Por favor, ayúdame.

Gracias!

Respuesta

26

Las consultas con nombre se compilan cuando se crea una instancia de SessionFactory (por lo tanto, esencialmente, cuando se inicia la aplicación).

La obvia ventaja , por lo tanto, es que todas sus consultas con nombre se validan en ese momento en lugar de fallar después de la ejecución. La otra ventaja es que son fácil (-ier) para mantener - sin duda para consultas complejas.

El desventaja es que consultas con nombre son no personalizable en tiempo de ejecución - puede definir/Parámetros para el suministro, por supuesto, pero más allá de lo que usted ha definido es lo que se obtiene; ni siquiera puedes cambiar la clasificación. Otra desventaja es que no podrá cambiar la consulta con nombre dentro de un servidor de aplicaciones en ejecución sin volver a cargar SessionFactory.

16

Ventajas

  • compilan y validado en aplicación el tiempo de arranque
  • fáciles de mantener que los literales de cadena incorporados en el código
  • HQL y consultas SQL nativas se pueden utilizar y reemplazar sin código cambios (sin necesidad de volver a compilar el código)

Desventajas

  • mapeo conjunto de resultados estática con las consultas SQL nativas de veces engorrosos

Por lo tanto, creo que definitivamente debe preferir consultas con nombre más literales de cadena en el código. Cuando necesite algún tipo de creación de consultas dinámicas en tiempo de ejecución, debe echarle un vistazo al Hibernate Criteria API. Los criterios de Hibernate no siempre son fáciles de usar e intuitivos, pero definitivamente debe usarlos en lugar de generar cadenas de consulta en tiempo de ejecución.

HTH

Cuestiones relacionadas