Как отобразить значения параметров sql для гибернации - P6Spy
Вопрос
Многие разработчики задают вопрос о значении параметра Hibernate SQL. Как отобразить значения параметров SQL Hibernate, переданные в базу данных? Hibernate просто отображает все значения параметров как вопросительный знак (?). Со свойствомshow_sql Hibernate будет отображать все сгенерированные операторы SQL, но не значения параметров SQL.
Например
Hibernate: insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (?, ?, ?, ?, ?, ?)
Есть ли способ записать или отобразить точные значения параметров SQL Hibernate?
Решение - P6Spy
Что ж, если есть вопрос, есть и ответ ~
P6Spy - полезная библиотека для регистрации всех значений операторов и параметров SQL перед их отправкой в базу данных. P6Spy является бесплатным, он используется для перехвата и записи всех операторов SQL вашей базы данных в файл журнала, и он работает с любым приложением, использующим драйвер JDBC.
1. Скачать библиотеку P6Spy
Получите «p6spy-install.jar», вы можете скачать его с
2. Извлеки это
Распакуйте файл p6spy-install.jar, найдитеp6spy.jar иspy.properties
3. Добавить библиотечную зависимость
Добавьтеp6spy.jar в зависимость библиотеки проекта
4. Изменить файл свойств P6Spy
Измените файл конфигурации базы данных. Вам необходимо заменить существующий драйвер JDBC драйвером P6Spy JDBC - "com.p6spy.engine.spy.P6SpyDriver
"
Оригинальный драйвер MySQL JDBC - «com.mysql.jdbc.Driver»
false com.mysql.jdbc.Driver password jdbc:mysql://localhost:3306/example root org.hibernate.dialect.MySQLDialect true
Изменил его на драйвер JDBC P6Spy - «com.p6spy.engine.spy.P6SpyDriver»
false com.p6spy.engine.spy.P6SpyDriver password jdbc:mysql://localhost:3306/example 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=
Change the Log file location
Измените расположение файла журнала в свойствеlogfile, все операторы SQL будут регистрироваться в этом файле.
Windows
logfile = c:/spy.log
*nix
logfile = /srv/log/spy.log
6. Скопируйте «spy.properties» в путь к классам проекта.
Скопируйте «spy.properties» в корневую папку вашего проекта, убедитесь, что ваш проект может найти «spy.properties», иначе будет выведено исключение «spy.properties» file not found.
7. Done
Запустите приложение и выполните транзакцию с базой данных, вы заметите, что все операторы SQL, отправленные из приложения в базу данных, будут записаны в файл, указанный вами в «spy.properties».
Пример файла журнала, как показано ниже.
insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (?, ?, ?, ?, ?, ?)| insert into example.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 в свойpom.xml
p6spy p6spy 1.3
Однако файл «spy.properties» не входит в комплект, вы должны создать его самостоятельно. Вы можете скачать шаблон здесь -spy.properties