Buenas Tardes Valentin,
El tema de las consultas e interacciones con la base de datos es posible por muchas vías. Consultas en HQL, en NativeSQL, en Criteria, en Views mapeados por Annotations o por el hbm.xml, etc.
Con respecto a estos dos casos que mencionas, Criteria y HQL, Criteria es una forma de hacer las mismas consultas que puedes realizar con HQL o con NativeSQL, solo que te las presenta en forma de clases y métodos que puedes utilizar de forma mas elegante, en otro punto, el uso de Criteria es amigable, y no necesitas saber SQL para manejarlo. Con Criteria puedes utilizar muchas expresiones (Expressions), restricciones (Restrictions), ordenamiento (Order), etc. Con respecto a si es estático o dinámico, las consultas en sí son estáticas, dado que, aún pasandole parámetros, igual te devolverá un resultado específico. Hay formas avanzadas de manejo de consultas dinámicas, pero ese no es el tema ahora.
Sugerencia: si sabes SQL, es recomendable ejecutar tus consultas via HQL o NativeSQL en hibernate, así te evitas que hibernate cree objetos en el Heap para las clases de Criteria, y a su vez, agregas performance a las consultas. Claro, el performance influye en toda la configuración de hibernate y en como manejes los recursos de la aplicación
He aquí TODO lo que necesitas saber de hibernate. La documentación de JBOSS.
Siempre a la orden.
--
www.JavaSOS.com
Grupo de colaboración Java/J2ee para desarrolladores de habla hispana.
--
Luis Alejandro Santana Valdez
Consultor Técnico-Funcional SAP -
Desarrollador JAVA
Cel. 829-301-7407