Что такое проекция в NHibernate?

У меня есть проект, в котором я использую NHibernate для обработки привязок к базе данных. До сих пор я в основном использовал основы, когда дело касалось запросов. Теперь я борюсь с более сложным запросом и замечаю новые части NHibernate. В частности, меня интересует SetProjection, который кажется важным при выполнении запросов.

Что такое проекция и как я обычно ее использую? Я предполагаю, что проекция - это общий термин, когда речь идет о базах данных, поэтому вы также можете давать более общие ответы.


person stiank81    schedule 20.01.2011    source источник
comment
en.wikipedia.org/wiki/Projection_(relational_algebra)   -  person Mauricio Scheffer    schedule 20.01.2011


Ответы (2)


Проекция, как сказал Антуан, есть трансформация. С точки зрения запроса это:

SELECT *PROJECTION* FROM Table

*PROJECTION* - выражение для преобразования данных.

Пример:

SELECT * FROM ORDER

Эквивалент критериев будет:

List orders = session.createCriteria(Order.class).list();

Здесь нет проекции, мы берем данные без преобразования. Если мы хотим одного:

SELECT NAME FROM PRODUCT

Здесь в игру вступает класс Projection. Вышеупомянутый запрос можно переписать в запрос критериев как:

List products=session.createCriteria(Product.class)
     .setProjection(Projection.property(\"name\"))
     .list();

Таким образом, мы проецируем все строки в одно поле item: name.

Есть и другие прогнозы: Projection.rowCount() например (для COUNT(*))

person Andrey    schedule 20.01.2011
comment
Спасибо! Уточняющий. И да - я начал с поиска в Google, но толком не нашел ответа. Кстати; Голос против был не от меня. +1 - person stiank81; 20.01.2011
comment
Что касается первой строки вашего ответа, я попал сюда из первого результата google =) - person Johnny_D; 23.04.2012

Не знаю насчет NHibernate, но в целом проекция - это преобразование одного набора в другой. В SQL это выражается как SELECT.

person Antoine Aubry    schedule 20.01.2011