Как отобразить hibernate значения параметра sql - P6Spy

Как отобразить значения параметров 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

Related