В поисках улучшения отладочной информации Hibernate

Возможный дубликат:
Вывести строку запроса в спящий режим со значениями параметров

Я использую Hibernate в качестве постоянного слоя. И я устанавливаю для show_sql значение true, чтобы увидеть отладочную информацию.

Тем не менее, я на самом деле не вижу полной информации, потому что большинство SQL-операторов, как:

insert 
into
    Address
    (address1, address2, city, province) 
values
    (?, ?, ?, ?)

все параметры - вопросительный знак, хотя я могу видеть некоторые фактические данные в части условия оператора select.

Я хочу информацию как:

insert 
into
    Address
    (address1, address2, city, province) 
values
    ("XXX address1", "XX address2", "XXX city", "XXX province")

Как я могу настроить, чтобы увидеть эти данные параметров, или это недостаток в спящем режиме??

1 ответ

Решение

Hibernate не может регистрировать SQL и его параметры в одной строке, как вы хотите. Ведение журнала обеспечивается Hibernate (путем настройки log4j.logger.org.hibernate.SQL=debug а также log4j.logger.org.hibernate.type=trace в конфигурации log4j) можно только регистрировать SQL и параметры в разных строках, вот так:

insert 
into
    Address
    (address1, address2, city, province) 
values
    (?, ?, ?, ?)
binding parameter [1] as [VARCHAR] - xxxxxx
binding parameter [2] as [VARCHAR] - xxxxxx
binding parameter [3] as [VARCHAR] - xxxx

Вы должны использовать прокси-драйвер JDBC, если вы хотите регистрировать SQL с параметрами в одной строке. Я попробовал log4jdbc, и он может это сделать, и он также может регистрировать время, затрачиваемое на каждый оператор SQL, и записывать строки в коде, которые вызывают операторы SQL.

Вы можете обратиться к этому блогу для получения дополнительной информации.

Другие вопросы по тегам