Подсчет JdbcTemplate запросов - PullRequest
0 голосов
/ 05 июля 2018

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

Есть ли способ добавить перехватчик в JdbcTemplate или DataSource, который мог бы сделать это для нас, или, альтернативно, есть ли способ проверить результаты при использовании тестовой базы данных, такой как H2, чтобы мы могли хотя бы доказать правильность?

1 Ответ

0 голосов
/ 05 июля 2018

Возможно, вы захотите перехватить драйвер JDBC, например, с помощью JDBCSpy .

Особенности

  • записать выполнение и время итерации всех операторов SQL
  • идентифицирует операторы, которые выполняются несколько раз
  • трассировка стека с настраиваемой глубиной для всех перечисленных операторов
  • предоставляет статистику для всех соединений, операторов SQL, наборов результатов
  • предоставляет размер результирующего набора
  • предоставляет API для получения всей статистической информации
  • список всех операторов, которые в данный момент выполняются
  • перечислить все операторы, которые были выполнены, но не были закрыты
  • уведомляет (например, через трассировку), если время выполнения оператора превышает настраиваемый порог
  • уведомляет, если вы забыли закрыть набор результатов или инструкцию перед закрытием соединения
  • поддерживает различные регистраторы (log4j, java logging, slf, ...)
  • расширяется пользовательскими слушателями

Проект, похоже, больше не поддерживается, но должен дать вам отправную точку. Перехватывая JDBC, вы гарантируете, что независимо от того, как выполняется запрос, например, В ручном режиме Connection, JdbcTemplate или JPA все запросы будут перехвачены.

...