Hibernate的show_sql参数只用于开发环境

4
使用Hibernate,如何仅在开发模式下启用show_sql?我希望在生产环境中禁用<property name="show_sql">true</property>,并在开发环境中启用。

你是否使用任何部署脚本,例如 ant - Eugene Retunsky
1
请查看此链接,我认为您会找到大部分信息。 连接不同的数据库开发-测试-生产 - Tejas
你在开发和生产环境中如何使任何事情不同?认真地说,你是怎么做的?因为你的答案需要与之兼容,并且最好以相同的方式完成。 - Old Pro
2个回答

3

您应该将与环境相关的信息保存在一个单独的属性文件中。这个文件应该从您的hibernate.cfg.xmlapplicationContext.xml中读取。

以下是示例文件:

###########################################################
################DATABASE INFORMATION ######################
###########################################################
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/appDB1
jdbc.username=root
jdbc.password=root


# Set Hibernate properties
hibernate.show_sql=true
hibernate.format_sql=false

同样地,您可以添加更多的配置信息。该文件在不同的环境中会有所不同。


1
谢谢!你能告诉我如何读取和解析这个属性文件吗? - Pratik Khadloya
@PratikKhadloya:你在使用 Spring 吗? - ManuPK

1
我猜你的问题是关于代码在运行时如何知道是否处于“开发模式”,因为如果不是这样,你只需要在配置文件中更改标志即可。
在这种情况下,你可以在运行时以编程方式设置show_sql属性(或任何其他属性):
Configuration config = new Configuration();
config.setProperty(Environment.SHOW_SQL, "true");
config.buildSessionFactory();
...

然后,您只需要根据您的状态选择true/false,以指示您是否处于开发模式。


从http://docs.jboss.org/hibernate/core/3.5/javadocs/org/hibernate/cfg/Configuration.html: "Configuration仅作为初始化时的对象。SessionFactory是不可变的,不会保留任何与Configuration的关联。" 因此,更改只能在应用程序启动时进行,而不能在会话创建后进行。 - migu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接