‫تعیین نوع fetch در Search APIهای NHibernate

برای آن که NHibernate بتواند به طور بهینه از Caching استفاده نماید باید Fetch در Entityها و Queryها به طور مناسبی تعریف شده باشد. Fetch به طور کلی به NHibernate می‌گوید sql دریافت اطلاعات از دیتابیس را چطور تولید کند. یک select کلی از همه جداول با استفاده از outer joinهای متعدد یا selectهای جداگانه به ازای هر جدول. مزیت عمده select جداگانه وقتی است که آن اطلاعات از قبل در Cache موجود باشند.

Fetch در Queryهای دیتابیسی NHibernate و APIهای مختلف جستجوی آن روش‌های متفاوتی دارد:

  • در HQL با استفاده join fetch انجام می‌شود. ±
  • در Linq-to-NH با استفاده از Expand و Fetch انجام می‌شود. ±
  • در QueryOver با Fetch انجام می‌شود (مشابه linq-to-nh). ±
  • در ICriteria با SetFetchMode انجام می‌شود. ±