Преимущества именованных запросов в спящем режиме?

Вот простой пример

from pandas import DataFrame

# Create data set
d = {'Revenue':[100,111,222], 
     'Cost':[333,444,555]}
df = DataFrame(d)


# mask = Return True when the value in column "Revenue" is equal to 111
mask = df['Revenue'] == 111

print mask

# Result:
# 0    False
# 1     True
# 2    False
# Name: Revenue, dtype: bool


# Select * FROM df WHERE Revenue = 111
df[mask]

# Result:
#    Cost    Revenue
# 1  444     111
29
задан user964904 14 October 2011 в 14:54
поделиться

2 ответа

Именованные запросы компилируются, когда создается экземпляр SessionFactory (так, по сути, когда ваше приложение запускается).

Очевидное преимущество , следовательно, состоит в том, что все ваши именованные запросы проверяются в то время, а не дают сбой при выполнении. Другое преимущество заключается в том, что их легко (-иер) поддерживать - конечно, для сложных запросов.

Недостатком является то, что именованные запросы не настраиваются во время выполнения - конечно, вы можете определять / предоставлять параметры, но помимо того, что вы определили, вы получить; Вы даже не можете изменить сортировку. Другим недостатком является то, что вы не сможете изменить именованный запрос на работающем сервере приложений без перезагрузки SessionFactory .

36
ответ дан ChssPly76 14 October 2011 в 14:54
поделиться

Преимущества

  • скомпилированы и проверены во время запуска приложения
  • проще в обслуживании, чем строковые литералы, встроенные в ваш код
  • HQL и нативные SQL-запросы можно использовать и заменять без изменения кода (нет необходимости повторной компиляции кода)

Недостатки

  • статические
  • Отображение набора результатов с нативными SQL-запросами иногда громоздко

Итак, я думаю, вам определенно следует предпочесть именованные запросы строковым литералам в вашем коде. Когда вам нужно какое-то динамическое создание запроса во время выполнения, вы должны взглянуть на Hibernate Criteria API . Критерии Hibernate не всегда просты и интуитивно понятны в использовании, но вы обязательно должны использовать их вместо генерации строк запросов во время выполнения.

HTH

22
ответ дан tscho 14 October 2011 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: