Вопрос
Многие разработчики задают вопрос о значении параметра Hibernate SQL. Как отобразить значения параметров SQL Hibernate, переданные в базу данных? В режиме гибернации просто отобразите все значения параметров в виде вопросительного знака (?). С помощью свойства show_sql Hibernate будет отображать все сгенерированные инструкции SQL, но не значения параметров SQL.
Например
Hibernate: insert into mkyong.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (?, ?, ?, ?, ?, ?)
Есть ли способ регистрировать или отображать точные значения параметров SQL в режиме гибернации?
Решение – P6Spy
Что ж, если есть вопрос, то есть и ответ~
P6Spy – это полезная библиотека для регистрации всех инструкций SQL и значений параметров перед отправкой в базу данных. P6Spy бесплатен, он используется для перехвата и регистрации всех ваших инструкций SQL базы данных в файл журнала, и он работает для любого приложения, использующего драйвер JDBC.
1. Скачать библиотеку P6Spy
Получить ” p6spy-install.jar “, вы можете скачать его с
2. Извлеките его
Извлеките p6spy-install.jar файл, ищите p6spy.jar и spy.свойства
3. Добавить зависимость от библиотеки
Добавить p6spy.jar в зависимости от библиотеки вашего проекта
4. Изменить файл свойств P6Spy
Измените файл конфигурации базы данных. Вам необходимо заменить существующий драйвер JDBC на драйвер JDBC P6Spy – ” com.p6spy.engine.spy. P6SpyDriver
“
Оригинал – драйвер MySQL JDBC – “com.mysql.jdbc. Водитель”
false com.mysql.jdbc.Driver password jdbc:mysql://localhost:3306/mkyong root org.hibernate.dialect.MySQLDialect true
Изменил его на драйвер JDBC P6Spy – “com.p6spy.engine.spy.”. Р6спидрайвер”
false com.p6spy.engine.spy.P6SpyDriver password jdbc:mysql://localhost:3306/mkyong root org.hibernate.dialect.MySQLDialect true
5. Изменить файл свойств P6Spy
Измените файл свойств P6Spy – ” spy.properties “
Замените “реальный драйвер” существующим драйвером MySQL JDBC
realdriver=com.mysql.jdbc.Driver #specifies another driver to use realdriver2= #specifies a third driver to use realdriver3=
Измените расположение файла журнала Измените расположение файла журнала в свойстве файл журнала , все инструкции SQL будут записываться в этот файл.
Окна
logfile = c:/spy.log
* шухер
logfile = /srv/log/spy.log
6. Скопируйте “spy.properties” в путь к классам проекта
Скопируйте “spy.properties” в корневую папку вашего проекта, убедитесь, что ваш проект может найти “spy.properties”, иначе он запросит файл “spy.properties” не найдено исключение.
7. Сделано
Запустите приложение и выполните некоторые транзакции с базой данных, вы заметите, что все инструкции SQL, отправленные из приложения в базу данных, будут записаны в файл, указанный вами в “spy.properties”.
Пример файла журнала выглядит следующим образом.
insert into mkyong.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (?, ?, ?, ?, ?, ?)| insert into mkyong.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (10.0, 1.1, '2009-12-30', 1.2, 11, 1000000)
Вывод
Честно говоря, P6Spy действительно полезен для сокращения времени отладки разработчиков. Пока ваш проект использует драйвер JDBC для подключения, P6Sqp может вписаться в него и регистрировать все инструкции SQL и значения параметров для вас.
Для пользователя Maven
Вы можете использовать Maven для загрузки зависимости P6Spy в свой Вы можете использовать Maven для загрузки зависимости P6Spy в свой
p6spy p6spy 1.3
Однако файл “spy.properties” не входит в комплект поставки, вы должны создать его самостоятельно. Вы можете скачать шаблон здесь – spy.properties
Ссылка
Оригинал: “https://mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/”