Вопрос-ответ

Hibernate show real SQL [duplicate]

Hibernate show real SQL [дубликат]

если я установлю

<property name="show_sql">true</property>

в моем hibernate.cfg.xml файле конфигурации в консоли я вижу SQL.

Но это не настоящий SQL... Могу ли я увидеть код SQL, который будет передан непосредственно в базу данных?

Пример:

Я вижу

select this_.code from true.employee this_ where this_.code=?

Могу ли я увидеть

select employee.code from employee where employee.code=12

реальный SQL?

Переведено автоматически
Ответ 1

Могу ли я увидеть (...) реальный SQL


Если вы хотите видеть SQL, отправляемый непосредственно в базу данных (который отформатирован аналогично вашему примеру), вам придется использовать какой-нибудь прокси-сервер драйвера jdbc, такой как P6Spy (или log4jdbc).

В качестве альтернативы вы можете включить ведение журнала для следующих категорий (используя log4j.properties файл здесь):

log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE

Первый эквивалентен hibernate.show_sql=true, второй печатает связанные параметры среди прочего.

Ссылка

Ответ 2

log4j.properties

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE

hibernate.cfg.xml

<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>

persistence.xml

Некоторые фреймворки используют persistence.xml:

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
Ответ 3

Если вы уже видите печатаемый SQL, это означает, что у вас есть приведенный ниже код в вашем hibernate.cfg.xml:

<property name="show_sql">true</property>

Чтобы также распечатать параметры привязки, добавьте следующее в свой файл log4j.properties:

log4j.logger.net.sf.hibernate.type=debug
Ответ 4

Стоит отметить, что код, который вы видите, отправляется в базу данных как есть, запросы отправляются отдельно, чтобы предотвратить внедрение SQL. AFAIK The ? метки - это заполнители, которые заменяются числовыми параметрами базой данных, а не hibernate.

java sql hibernate