Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Проецирование, как сказал Антуан, - это преобразование. В терминах запроса это:

SELECT *PROJECTION* FROM Table

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

Пример:

SELECT * FROM ORDER

эквивалентом критериев будет:

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

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

SELECT NAME FROM PRODUCT

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

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

Итак, мы проецируем все строки в отдельный элемент: name.

Существуют и другие проекции: Projection.rowCount() например (для COUNT(*))

Ответ 2

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