Spring jpa транзакция количество запросов - PullRequest
2 голосов
/ 08 декабря 2011

Мы используем Spring + JPA + Hibernate + MYSQL для нашего проекта. Используя EHCache, кеш запросов и c3p0.

В одном месте кода мы начинаем новую транзакцию для каждого запроса.

Непосредственно перед выходом из метода, который создал транзакцию, я хотел бы получить количество запросов, попавших в базу данных в текущей транзакции.

Пожалуйста, объясните мне, как получить эту информацию.

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Вам нужно будет обернуть классы JDBC (посмотрите на P6SPY ).Вы также можете достичь чего-то подобного, написав обходящий аспект - вам нужно будет использовать aspectj, поскольку Spring AOP не сможет применять аспекты к классам, которые не являются bean-компонентами.

Если у вас есть возможность добавлять дополнительную логику при каждом вызове базы данных, вы можете создать реализацию, использующую локальные потоки для хранения счетчиков для каждой транзакции в отдельности.

Использование пружины транзакциясинхронизация поддержка сброса / записи статистики по завершении транзакции.

0 голосов
/ 08 декабря 2011

Hibernate имеет поддержку статистики и проверяет this на использование.Проверьте org.hibernate.stat.QueryStatistics.getExecutionCount().Но это дает счетчик всех запросов, выполненных до этого момента, поэтому вам нужно получить разницу между количеством до выполнения метода и после выполнения.Также вам необходимо убедиться, что никакие другие транзакции (например, кварцевые запланированные задания) не выполняют операции с БД, чтобы получить точный счет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...