当前位置: 首页 > 知识库问答 >
问题:

Hibernate show sql等于Stdout

邹嘉石
2023-03-14
13:06:53,323 INFO  [stdout] (http-/172.29.250.43:8080-7) Hibernate: select sampledata0_.idsample as idsample4_10_1_, sampledata0_.id as id1_9_1_, sampledata0_.id as id1_9_0_, sampledata0_.idsample as idsample4_9_0_, sampledata0_.sname as sname2_9_0_, sampledata0_.svalue as svalue3_9_0_ from sample_meta_data sampledata0_ where sampledata0_.idsample=?
13:06:53,324 INFO  [stdout] (http-/172.29.250.43:8080-7) Hibernate: select sampledata0_.idsample as idsample4_10_1_, sampledata0_.id as id1_9_1_, sampledata0_.id as id1_9_0_, sampledata0_.idsample as idsample4_9_0_, sampledata0_.sname as sname2_9_0_, sampledata0_.svalue as svalue3_9_0_ from sample_meta_data sampledata0_ where sampledata0_.idsample=?

在内部Hibernate时,假设使用system.out.println。那么会不会消耗更多的内存呢?format_sqlshow_sql如何在内部工作?

共有1个答案

关志
2023-03-14

show_sqlformat_sql设置true不会消耗更多内存,但它们会将SQL语句写入控制台,因此很耗时。

来自文档:

将所有SQL语句写入控制台。这是将日志类别org.hibernate.sql设置为debug的替代方法。

例如true false

因此,当您将属性show_sql设置为true时,hibernate将使用以下方法将SQL语句打印到控制台:

Hibernate使用以下方法显示它在内部使用的SQLStatementLogger类中的SQL语句。

/**
 * Log a SQL statement string.
 *
 * @param statement The SQL statement.
 * @param style The requested formatting style.
 */
public void logStatement(String statement, FormatStyle style) {
    if ( log.isDebugEnabled() || logToStdout ) {
        style = determineActualStyle( style );
        statement = style.getFormatter().format( statement );
    }
    log.debug( statement );
    if ( logToStdout ) {
        System.out.println( "Hibernate: " + statement );
    }
}

在上述方法中,如果format_sql设置为true,则将对SQL语句进行格式化,否则将不应用格式化样式。

现在,如果将日志级别设置为debug,则将SQL语句写入日志文件。如果您将show_sql设置为true,则它将消息打印到console。正如您的问题中提供的链接所述,与将数据打印到日志文件相比,使用system.out.println更耗时。

通常,当应用程序处于生产状态时,日志级别不会设置为debug,因为将消息写入日志文件需要一些时间。

 类似资料:
  • 问题内容: 我正在从xml配置转移到注释。我想转换一个会话范围的bean是 可以通过注释完成此操作吗?如果没有,我该怎么做才能使该声明继续工作? 问题答案: 在spring上下文xml中,执行以下操作: 请注意,尽管如此,你将需要为该包中的所有类编写接口。

  • 问题内容: 我在PostgreSQL中有一个名为的关系,该关系包含2个字段:和,我想找到具有最高值的产品。据我所知,有两种方法可以做到: 或者 他们的执行速度有什么不同吗? 问题答案: 如果有任何行,第一个查询将失败(如Gordon所示)。 仅当所有行都具有时,第二个查询才会失败。因此,它在大多数情况下应该是可用的。(而且速度更快。) 如果在 Postgres 12或更早版本中 需要NULL安全查

  • 今天我注意到这个node.js代码: 给出输出 这很奇怪;如果某物不等于0或大于0,那么它为什么大于或等于0呢?发生什么事了?

  • 标题说明了一切。我的问题是关于不同的字符串等价方法的效率。我经常使用<代码>。equalsIgnoreCase(String str),因为我对它很有兴趣。但我开始怀疑这是否是寻找字符串之间等价性的最有效方法。在我看来,正在调用一种大小写转换方法或,然后在其定义中调用,但我可能错了。那么,以下哪种方法在以下情况或任何情况下更有效?

  • 我目前正在Codecademy上学习JavaScript,我遇到了一些问题。我在一个叫做“建造石头,布,剪刀”的部分,有一个部分有一个条件,如果数学。random()大于0.33小于0.66,计算机将选择纸张。我的问题是,如何建立一个if条件,即某个东西大于X,但同时小于Y?

  • 本文向大家介绍1in等于多少mm?1mm等于多少px?相关面试题,主要包含被问及1in等于多少mm?1mm等于多少px?时的应答技巧和注意事项,需要的朋友参考一下 1in == 96px 1mm == 0.1cm == 3.78px 1in == 96/3.78 mm