/ / हाइबरनेट स्टार्टअप लॉग सक्षम करें - हाइबरनेट, ऑरम, हाइबरनेट-मैपिंग

हाइबरनेट स्टार्टअप लॉग सक्षम करें - हाइबरनेट, ओआरएम, हाइबरनेट-मैपिंग

"Java Persistence with 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>

मेरा 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 को कंसोल पर प्रिंट होते हुए देख सकता था।

लेकिन जो मैं नहीं देख रहा हूं वह स्टार्ट अप लॉग है (जिसका मैंने शीर्ष पर उल्लेख किया है)। हाइबरनेट ने एसक्यूएल उत्पन्न किया, लेकिन आवेदन की शुरुआत में नहीं, यह केवल तब हुआ जब मैंने संस्थाओं के साथ काम करना शुरू किया।

यहाँ क्या गलत है?

उत्तर:

उत्तर № 1 के लिए 1

ऐसा लगता है कि आप उम्मीद कर रहे हैं कि शुरुआत में, आप "एसक्यूएल क्वेरीज़" की एक श्रृंखला देखेंगे। ऐसा नहीं होता है।

जबकि हाइबरनेट आवश्यक एसक्यूएल प्रश्नों की गणना कर रहा है, यह वास्तव में उन्हें नहीं चला रहा है, इसलिए आप उन्हें "show_sql = true" लॉगिंग निर्देश के माध्यम से नहीं देखते हैं।

लेकिन अगर आपके पास नामित प्रश्नों में त्रुटियां हैं, उदाहरण के लिए, यह स्टार्ट अप पर एक अपवाद को फेंक देगा, जो कि एक कारण है जो मुझे नामांकित प्रश्नों का उपयोग करना बहुत उपयोगी है।