Я думаю, что вы спрашиваете, когда будет , вы считаете Критериальный Запрос.Кроме того, я предполагаю, что вы используете сервер приложений.
Существует API Criteria, позволяющий создавать динамические запросы SQL безопасным для типов образом, предотвращающим внедрение SQL.В противном случае вы будете объединять строки SQL вместе, что сопряжено с ошибками и угрозой безопасности: например, SQL-инъекция.Это будет единственный раз, когда вы захотите использовать Criteria API.
Если запрос остается в основном тем же, но нужно принимать только другие параметры, вы должны использовать аннотированные @NamedQueries, которые проще, предварительно скомпилированы и могут быть кэшированы ввторичный кеш и проверяется при запуске сервера.
Это в основном практическое правило , касающееся критериальных запросов по сравнению с @NamedQueries.По моему опыту, вам редко требуется API Criteria, но хорошо, что он существует для тех редких случаев, когда это требуется.
Надеюсь, это поможет.