在Spring-Hibernate应用程序中, log4j 属性文件中的hibernate.show_sql=true
足以显示hibernate生成的查询。但是如果我们需要实际的sql查询,我们必须做什么。(对于生产环境,我需要观察并在更新模式之前验证查询)。
我要做的是,在生产中的第一个模式生成之后(通过hibernate本身)我不希望hibernate更新模式(DDL)。我想劫持alter,update(DDL)查询并在验证之后我想在DB中手动运行这些脚本。 有没有办法做到这一点?
答案 0 :(得分:0)
Hibernate内置了一个函数,可以将所有生成的SQL语句记录到控制台。您可以通过在Hibernate配置文件show_sql
中添加hibernate.cfg.xml
属性来启用它。这个函数适用于基本的故障排除,并且可以看看Hibernate正在做什么。
<强> hibernate.cfg.xml中强>
<强> show_sql 强>
启用将所有生成的SQL语句记录到控制台
<property name="show_sql">true</property>
<强> format_sql 强>
格式化生成的SQL语句以使其更具可读性,但占用更多屏幕空间。
<property name="format_sql">true</property>
<强> use_sql_comments 强>
Hibernate会在所有生成的SQL语句中放置注释,以暗示生成的SQL尝试做什么
<property name="use_sql_comments">true</property>
<强> log4j.properties 强>
log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG ## is equivalent to hibernate.show_sql=true
log4j.logger.org.hibernate.type=TRACE ## allows you to see the binding parameters
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
log4j.logger.org.hibernate.tool.hbm2ddl=debug
要打印绑定参数,请将以下内容添加到log4j.properties文件中:
log4j.logger.net.sf.hibernate.type=debug
答案 1 :(得分:0)
在 log4j.properties 文件
中添加以下配置记录SQL语句
log4j.logger.org.hibernate.SQL=debug
记录传递给查询的JDBC参数
log4j.logger.org.hibernate.type=trace
在hibernate配置文件中启用show sql属性,如下所示。
<property name="show_sql">true</property>
有关详细信息,请查看post