.net - left - ¿Qué es una proyección en NHibernate?
nhibernate restrictions (2)
Tengo un proyecto donde estoy usando NHibernate para manejar los enlaces a la base de datos. Hasta ahora he estado usando lo básico en lo que respecta a consultas. Ahora estoy luchando con una consulta más difícil, y me doy cuenta de las nuevas partes de NHibernate. En particular, tengo curiosidad acerca de SetProjection
, que parece ser importante al hacer consultas.
¿Qué es una proyección y cómo la usaré normalmente? Supongo que una proyección es un término general cuando se trata de bases de datos, por lo que puede dar respuestas más generales también.
La proyección como dijo Antoine es transformación. En términos de consulta es:
SELECT *PROJECTION* FROM Table
*PROJECTION*
es expresión para la transformación de datos.
Ejemplo:
SELECT * FROM ORDER
Los Criterios equivalentes serían:
List orders = session.createCriteria(Order.class).list();
No hay proyección aquí, tomamos datos sin transformación. Si queremos uno:
SELECT NAME FROM PRODUCT
Aquí, la clase de Proyección entra en juego. La consulta anterior se puede reescribir en una consulta de Criterios como:
List products=session.createCriteria(Product.class)
.setProjection(Projection.property(/"name/"))
.list();
Así que proyectamos todas las filas a un solo elemento: campo de name
.
Hay otras proyecciones: Projection.rowCount()
por ejemplo (para COUNT(*)
)
No sé sobre NHibernate, pero en general, una proyección es una transformación de un conjunto en otro conjunto. En SQL, se expresa como un SELECT.