2011-05-04 9 views
2

로그 사용 나는라는 한 줄 건너 왔어요 하나의 엔터티가있는 응용 프로그램 데이터베이스에서 지속되는 메시지.최대 절전 모드 시작이 "최대 절전 모드 자바 지속성"책에서

설정 파일에 show_sql=true을 활성화했습니다. 내 개체를 업데이트/저장할 때 나는 SQL 콘솔에 인쇄하기 볼 수있는 이러한 설정으로

# 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 

:

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

내 Log4J.properties : 아래 내 설정 파일을 볼 수 있었다.

하지만 내가 볼 수없는 것은 로그를 시작한 것입니다 (위에서 언급 했음). Hibernate는 SQL을 생성했으나 응용 프로그램의 시작 시점이 아니라 Entities를 다루기 시작했을 때만 발생했습니다.

무엇이 잘못 되었나요?

+0

정확히 무엇이 문제입니까? 'org.hibernate.persister.entity' logger의 출력을 보시겠습니까? – axtavt

+0

@axtavt - 시작할 때 해당 클래스의 로그가 나타나지 않습니다. – Vicky

답변

1

처음 시작할 때 일련의 SQL 쿼리가 반복되는 것을 알 수 있습니다. 그게 무슨 일이 아니야.

Hibernate는 필요한 SQL 쿼리를 계산하고 있지만 실제로는 실행되지 않으므로 "show_sql = true"로깅 지시문을 통해 표시되지 않습니다.

그러나 이름이 지정된 쿼리에 오류가있는 경우 (예 : 시작시 예외가 발생 함) 이는 이름이 지정된 쿼리를 사용하면 매우 유용합니다.