Дамп активности Hibernate в файл сценария sql - PullRequest
1 голос
/ 05 мая 2010

Я пытаюсь записать спящий режим (только операции dml) в файл сценария sql. Моя цель - получить способ восстановить базу данных из заданной начальной точки в текущее состояние, выполнив сгенерированный скрипт.

Я могу получить SQL-запросы из журналов log4j, но они содержат больше информации, чем необработанные SQL-запросы, и мне нужно будет их проанализировать и извлечь только полезные операторы.

Так что я ищу программный способ, может быть, слушая операции persist / merge / delete и получая доступ к сгенерированным hibernate операторам sql.

Я не люблю изобретать велосипед, поэтому, если кто-нибудь знает способ сделать это, я был бы очень признателен.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 05 мая 2010

Как правило, лучший способ сделать это - просто включить ведение журнала на вашем SQL-сервере. Все основные РСУБД поддерживают ведение журнала всех операторов SQL, которые они выполняют. Это дает дополнительное преимущество - ловить вещи, происходящие за пределами Hibernate.

0 голосов
/ 05 мая 2010

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

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

Я уверен, что есть и другие подобные инструменты (или, что еще хуже, вы можете попробовать реализовать подкласс DataSource, Connection и PreparedStatement по вашему выбору).

0 голосов
/ 05 мая 2010

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

...