Hibernate 启用休眠启动日志

Hibernate 启用休眠启动日志,hibernate,orm,hibernate-mapping,Hibernate,Orm,Hibernate Mapping,在《带Hibernate的Java持久化》一书中,我遇到了一行这样的话: Hibernate produces all trivial CRUD SQL at startup. It caches the SQL statements internally for future use, thus avoiding any runtime cost of SQL generation for the most common operations. 要查看启动日志,它会显示: Enable D

在《带Hibernate的Java持久化》一书中,我遇到了一行这样的话:

Hibernate produces all trivial CRUD SQL at startup. It caches the SQL statements
internally for future use, thus avoiding any runtime cost of SQL generation for the
most common operations. 
要查看启动日志,它会显示:

Enable DEBUG logging for the org.hibernate.persister.entity package, and watch (or search) the
Hibernate startup log.
我有一个平凡的应用程序,其中有一条实体消息,我将其持久保存在数据库中

我在配置文件中启用了enable
show\u sql=true
。您可以在下面看到我的配置文件:

<session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/ajax</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">XXXX</property>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <!-- Use the C3P0 connection pool provider -->
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">300</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>
    <!-- Show and print nice SQL on stdout -->
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <!-- List of XML mapping files -->
    <mapping resource="org/myapp/hibernate/first/Message.hbm.xml" />
</session-factory>
通过这些设置,我可以在保存/更新实体时看到SQL在控制台上打印出来

但我没有看到的是启动日志(我在顶部提到)。Hibernate确实生成了SQL,但不是在应用程序开始时,它只是在我开始处理实体时发生的


这里出了什么问题?

听起来您希望在启动时,您会看到一系列SQL查询滚滚而过。事实并非如此

当Hibernate正在计算所需的sql查询时,它实际上并没有运行它们,所以您不会通过“show_sql=true”日志指令看到它们


但是,例如,如果在命名查询中出现错误,它将在启动时引发异常,这也是我发现使用命名查询非常有用的原因之一。

到底是什么问题?您是否看到
org.hibernate.persister.entity
logger的输出?@axtavt-启动时不会显示该类的日志。
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p %c{1}:%L - %m%n
# Root logger option
log4j.rootLogger=DEBUG, stdout
# Hibernate logging options (INFO only shows startup messages)
log4j.logger.org.hibernate=DEBUG
# Log JDBC bind parameter runtime arguments
log4j.logger.org.hibernate.type=DEBUG
log4j.logger.org.hibernate.persister.entity=DEBUG
log4j.logger.org.hibernate.SQL=DEBUG