Например, если исключением является ConstrainViolationException: это исключение сообщает о результате нарушений ограничений
@ExceptionHandler({ ConstraintViolationException.class })
public ResponseEntity<Object> handleConstraintViolation(
ConstraintViolationException ex, WebRequest request) {
List<String> errors = new ArrayList<String>();
for (ConstraintViolation<?> violation : ex.getConstraintViolations()) {
errors.add(violation.getRootBeanClass().getName() + " " +
violation.getPropertyPath() + ": " + violation.getMessage());
}
ApiError apiError =
new ApiError(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), errors);
return new ResponseEntity<Object>(
apiError, new HttpHeaders(), apiError.getStatus());
}
Эта страница, кажется, имеет некоторую хорошую информацию об установке, какую технику использовать хорошо (допустил, что я действительно просто просматривал ее).
SQLCacheDependency реализован как индексированное представление, и каждый раз, когда таблица изменяется, этот индекс представлений изменяется. такое большое количество представлений (объектов SQLCacheDependency) в одной и той же таблице означает, что для модификаций достаточно производительности. однако, если у вас есть 1 представление (объект SQLCacheDependency) на таблицу, у вас не должно возникнуть проблем.
уведомление об изменении кеша является асинхронным и запускается, когда у сервера есть ресурсы.
Все, что я могу предоставить, - это неофициальные доказательства производительности, но мы используем SqlCacheDependency как своего рода «решение для обмена сообщениями» для крупного корпоративного приложения, которое обрабатывает порядка десяти тысяч сообщений в час.
Базовая архитектура заключается в том, что наша компания использует Perforce для управления версиями, и у нас есть «служба подписки», которая получает сообщения от триггерного вызова веб-службы, которая вызывается при каждой фиксации p4 и вставляет запись в базу данных SQL. В нашем приложении есть настройка зависимости для отправки уведомлений о подписке для каждого изменения, которое влияет на ветку или путь, который вы отслеживаете.
Производительность в порядке. Время триггера составляет порядка 200 мсек, и у нас никогда не было жалоб на задержку передачи сообщений конечным пользователям.
Как всегда,
Вы правы, информации по этому поводу мало, но на этой странице есть фраза, связанная с вашим вопросом http://msdn.microsoft.com/en-us/ library / ms178604% 28VS.80% 29.aspx
«Операции с базой данных, связанные с зависимостью кэша SQL, просты и поэтому не требуют больших затрат на обработку на сервере»
Надеюсь, это поможет вам, хотя ваш вопрос уже староват.
Зависимость кэша SQL, использующая механизм опроса, не должна быть нагрузкой на сервер sql или сервер приложений.
Давайте посмотрим, какие шаги необходимы для работы sqlcachedependency, и проанализируем их:
Внутренне:
всякий раз, когда происходит изменение в таблице «Сотрудник», запускается триггер, который в свою очередь обновляет таблицу «ASPnet_sqlcachetablesforchangenotification». Теперь приложение опрашивает базу данных каждые 5000 мс и проверяет наличие изменений в таблице «ASPnet_sqlcachetablesforchangenotification» . в случае каких-либо изменений соответствующие кеши удаляются из памяти.
Огромное преимущество кеширования в сочетании со свежестью данных (данные могут быть устаревшими максимум на 5 секунд). Опрос выполняется в фоновом режиме, и это не должно быть препятствием для производительности. потому что, как видно из приведенного выше списка, эта задача наименее требовательна к процессору.