JPA или перехват запросов - PullRequest
1 голос
/ 20 июня 2011

Как перехватить выполняемый запрос?По сути, мне нужно перехватывать каждый запрос, выполняемый через EntityManger, и записывать «NATIVE» sql в файл журнала сервера приложений для анализа?пожалуйста, дайте мне знать, есть ли способ введения до и после, чтобы я мог регистрировать запрос и время, затрачиваемое на его выполнение?

Имейте в виду, что движок JPA может быть в спящем режиме или Open JPA, поэтому независимо от реализации JPA, каков общий способ анализа запросов на стороне сервера?

Любая помощь очень ценится.1006 * Заранее спасибо,

Бхавеш

Ответы [ 3 ]

1 голос
/ 20 июня 2011

Если вы используете Hibernate, вы можете использовать перехватчик Hibernate, он перехватывает все запущенные запросы.

Session s = sessionFactory.openSession(new MyInterceptor());

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

в качестве альтернативы вы можете регистрировать все запросы для определенного файла (используя log4j). для этого необходимо установить show_sql в true в cfg-файле hibernate.

0 голосов
/ 20 июня 2011

Каждая хорошая СУБД должна обеспечивать (слишком длинную) функцию ведения журнала запросов.

Но если вы хотите остаться с Java, попробуйте использовать JDBC Logger или Log4JDBC . Помните, что полное ведение журнала запросов может повлиять на производительность вашего приложения, поэтому делайте это осторожно в производственной среде.

0 голосов
/ 20 июня 2011

Я не вижу ничего об отладке / ведении журнала в спецификации JPA, за исключением того факта, что внешние свойства, которые использует реализация, должны будут использовать свое собственное пространство имен (например, com.hibernate.log).

Так как поставщик JPA должен быть упомянут в файле persistence.xml, не можете ли вы поместить свойства, специфичные для реализации, в один и тот же файл (по крайней мере, так он работает в Hibernate)?

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