Вот простой пример
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
Именованные запросы компилируются, когда создается экземпляр SessionFactory (так, по сути, когда ваше приложение запускается).
Очевидное преимущество , следовательно, состоит в том, что все ваши именованные запросы проверяются в то время, а не дают сбой при выполнении. Другое преимущество заключается в том, что их легко (-иер) поддерживать - конечно, для сложных запросов.
Недостатком является то, что именованные запросы не настраиваются во время выполнения - конечно, вы можете определять / предоставлять параметры, но помимо того, что вы определили, вы получить; Вы даже не можете изменить сортировку. Другим недостатком является то, что вы не сможете изменить именованный запрос на работающем сервере приложений без перезагрузки SessionFactory .
Преимущества
Недостатки
Итак, я думаю, вам определенно следует предпочесть именованные запросы строковым литералам в вашем коде. Когда вам нужно какое-то динамическое создание запроса во время выполнения, вы должны взглянуть на Hibernate Criteria API . Критерии Hibernate не всегда просты и интуитивно понятны в использовании, но вы обязательно должны использовать их вместо генерации строк запросов во время выполнения.
HTH