在Hibernate Spring应用程序中更新架构之前获取DDL

时间:2014-08-24 15:59:23

标签: spring hibernate oracle10g

在Spring-Hibernate应用程序中, log4j 属性文件中的hibernate.show_sql=true足以显示hibernate生成的查询。但是如果我们需要实际的sql查询,我们必须做什么。(对于生产环境,我需要观察并在更新模式之前验证查询)。

我要做的是,在生产中的第一个模式生成之后(通过hibernate本身)我不希望hibernate更新模式(DDL)。我想劫持alter,update(DDL)查询并在验证之后我想在DB中手动运行这些脚本。 有没有办法做到这一点?

2 个答案:

答案 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