В книге «Сохранение Java с Hibernate» я наткнулся на строку, которая говорит:
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.
У меня есть тривиальныйприложение с одной сущностью Сообщение, которое я сохраняю в базе данных.
Я включил show_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>
My Log4J.properties:
# 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
С этими настройками я мог видеть, как SQL выводится на консолькогда я сохраняю / обновляю свою сущность.
но я не вижу, это журнал запуска (который я упоминал сверху).Hibernate генерировал SQL, но не в начале приложения, это произошло только тогда, когда я начал работать с сущностями.
Что здесь не так?