Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r14837 -
 core/trunk/documentation/manual/src/main/docbook/en-US/content.

hibernate-commits

2008-07-01


Author LoginPost Reply
Author: hardy.ferentschik
Date: 2008-07-01 11:06:41 -0400 (Tue, 01 Jul 2008)
New Revision: 14837

Modified:
 core/trunk/documentation/manual/src/main/docbook/en-US/content/configuration.xml
Log:
Updated the Logging paragraph regrading the switch to slf4j.

Modified: core/trunk/documentation/manual/src/main/docbook/en-US/content/configuration.xml
===================================================================
--- core/trunk/documentation/manual/src/main/docbook/en-US/content/configuration.xml  2008-07-01 14:54:50 UTC (rev 14836)
+++ core/trunk/documentation/manual/src/main/docbook/en-US/content/configuration.xml  2008-07-01 15:06:41 UTC (rev 14837)
@@(protected) @@
-<?xml version='1.0' encoding="UTF-8"?>
-<!--
- ~ Hibernate, Relational Persistence for Idiomatic Java
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-
-<chapter id="session-configuration" revision="1">
-   <title>Configuration</title>
-  
-   <para>
-     Because Hibernate is designed to operate in many different environments, there
-     are a large number of configuration parameters. Fortunately, most have sensible
-     default values and Hibernate is distributed with an example
-     <literal>hibernate.properties</literal> file in <literal>etc/</literal> that shows
-     the various options. Just put the example file in your classpath and customize it.
-   </para>
-
-   <sect1 id="configuration-programmatic" revision="1">
-     <title>Programmatic configuration</title>
-
-     <para>
-        An instance of <classname>org.hibernate.cfg.Configuration</classname> represents an entire set of mappings
-        of an application's Java types to an SQL database. The <classname>org.hibernate.cfg.Configuration</classname>
-        is used to build an (immutable) <interfacename>org.hibernate.SessionFactory</interfacename>. The mappings
-        are compiled from various XML mapping files.
-     </para>
-
-     <para>
-        You may obtain a <classname>org.hibernate.cfg.Configuration</classname> instance by instantiating
-        it directly and specifying XML mapping documents. If the mapping files are in the classpath,
-        use <literal>addResource()</literal>:
-     </para>
-
-     <programlisting><![CDATA[Configuration cfg = new Configuration()
-   .addResource("Item.hbm.xml")
-   .addResource("Bid.hbm.xml");]]></programlisting>
-
-     <para>
-        An alternative (sometimes better) way is to specify the mapped class, and
-        let Hibernate find the mapping document for you:
-     </para>
-
-     <programlisting><![CDATA[Configuration cfg = new Configuration()
-   .addClass(org.hibernate.auction.Item.class)
-   .addClass(org.hibernate.auction.Bid.class);]]></programlisting>
-
-     <para>
-        Then Hibernate will look for mapping files named <filename>/org/hibernate/auction/Item.hbm.xml</filename>
-        and <filename>/org/hibernate/auction/Bid.hbm.xml</filename> in the classpath. This approach eliminates any
-        hardcoded filenames.
-     </para>
-    
-     <para>
-        A <classname>org.hibernate.cfg.Configuration</classname> also allows you to specify configuration
-        properties:
-     </para>
-
-     <programlisting><![CDATA[Configuration cfg = new Configuration()
-   .addClass(org.hibernate.auction.Item.class)
-   .addClass(org.hibernate.auction.Bid.class)
-   .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect")
-   .setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")
-   .setProperty("hibernate.order_updates", "true");]]></programlisting>
-  
-     <para>
-        This is not the only way to pass configuration properties to Hibernate.
-        The various options include:
-     </para>
-
-     <orderedlist spacing="compact">
-        <listitem>
-           <para>
-             Pass an instance of <classname>java.util.Properties</classname> to
-             <literal>Configuration.setProperties()</literal>.
-           </para>
-        </listitem>
-        <listitem>
-           <para>
-             Place a file named <filename>hibernate.properties</filename> in a root directory of the classpath.
-           </para>
-        </listitem>
-        <listitem>
-           <para>
-             Set <literal>System</literal> properties using <literal>java -Dproperty=value</literal>.
-           </para>
-        </listitem>
-        <listitem>
-           <para>
-             Include <literal>&lt;property&gt;</literal> elements in
-             <literal>hibernate.cfg.xml</literal> (discussed later).
-           </para>
-        </listitem>
-     </orderedlist>
-
-     <para>
-        <filename>hibernate.properties</filename> is the easiest approach if you want to get started quickly.
-     </para>
-
-     <para>
-        The <classname>org.hibernate.cfg.Configuration</classname> is intended as a startup-time object,
-        to be discarded once a <literal>SessionFactory</literal> is created.
-     </para>
-
-   </sect1>
-  
-   <sect1 id="configuration-sessionfactory">
-     <title>Obtaining a SessionFactory</title>
-
-     <para>
-        When all mappings have been parsed by the <classname>org.hibernate.cfg.Configuration</classname>,
-        the application must obtain a factory for <interfacename>org.hibernate.Session</interfacename> instances.
-        This factory is intended to be shared by all application threads:
-     </para>
-
-     <programlisting><![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]></programlisting>
-
-     <para>
-        Hibernate does allow your application to instantiate more than one
-        <interfacename>org.hibernate.SessionFactory</interfacename>. This is useful if you are using more than
-        one database.
-     </para>
-
-   </sect1>
-
-   <sect1 id="configuration-hibernatejdbc" revision="1">
-     <title>JDBC connections</title>
-
-     <para>
-        Usually, you want to have the <interfacename>org.hibernate.SessionFactory</interfacename> create and pool
-        JDBC connections for you. If you take this approach, opening a <interfacename>org.hibernate.Session</interfacename>
-        is as simple as:
-     </para>
-
-     <programlisting><![CDATA[Session session = sessions.openSession(); // open a new Session]]></programlisting>
-    
-     <para>
-        As soon as you do something that requires access to the database, a JDBC connection will be obtained from
-        the pool.
-     </para>
-
-     <para>
-        For this to work, we need to pass some JDBC connection properties to Hibernate. All Hibernate property
-        names and semantics are defined on the class <classname>org.hibernate.cfg.Environment</classname>. We will
-        now describe the most important settings for JDBC connection configuration.
-     </para>
-
-     <para>
-        Hibernate will obtain (and pool) connections using <classname>java.sql.DriverManager</classname>
-        if you set the following properties:
-     </para>
-
-     <table frame="topbot">
-        <title>Hibernate JDBC Properties</title>
-        <tgroup cols="2">
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-        <tbody>
-        <row>
-           <entry>
-             <property>hibernate.connection.driver_class</property>
-           </entry>
-           <entry>
-             <emphasis>JDBC driver class</emphasis>
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.connection.url</property>
-           </entry>
-           <entry>
-             <emphasis>JDBC URL</emphasis>
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.connection.username</property>
-           </entry>
-           <entry>
-             <emphasis>database user</emphasis>
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.connection.password</property>
-           </entry>
-           <entry>
-             <emphasis>database user password</emphasis>
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.connection.pool_size</property>
-           </entry>
-           <entry>
-             <emphasis>maximum number of pooled connections</emphasis>
-           </entry>
-        </row>
-        </tbody>
-        </tgroup>
-     </table>
-
-     <para>
-        Hibernate's own connection pooling algorithm is however quite rudimentary.
-        It is intended to help you get started and is <emphasis>not intended for use
-        in a production system</emphasis> or even for performance testing. You should
-        use a third party pool for best performance and stability. Just replace the
-        <property>hibernate.connection.pool_size</property> property with connection
-        pool specific settings. This will turn off Hibernate's internal pool. For
-        example, you might like to use C3P0.
-     </para>
-
-     <para>
-        C3P0 is an open source JDBC connection pool distributed along with Hibernate in the <filename>lib</filename>
-        directory. Hibernate will use its <classname>org.hibernate.connection.C3P0ConnectionProvider</classname>
-        for connection pooling if you set <property>hibernate.c3p0.*</property> properties. If you'd like to use Proxool
-        refer to the packaged <filename>hibernate.properties</filename> and the Hibernate web site for more
-        information.
-     </para>
-
-     <para>
-        Here is an example <filename>hibernate.properties</filename> file for C3P0:
-     </para>
-
-     <programlisting id="c3p0-configuration" revision="1"><![CDATA[hibernate.connection.driver_class = org.postgresql.Driver
-hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
-hibernate.connection.username = myuser
-hibernate.connection.password = secret
-hibernate.c3p0.min_size=5
-hibernate.c3p0.max_size=20
-hibernate.c3p0.timeout=1800
-hibernate.c3p0.max_statements=50
-hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
-
-     <para>
-        For use inside an application server, you should almost always configure Hibernate to obtain connections
-        from an application server <interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You'll
-        need to set at least one of the following properties:
-     </para>
-
-     <table frame="topbot">
-        <title>Hibernate Datasource Properties</title>
-        <tgroup cols="2">
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-        <tbody>
-        <row>
-           <entry>
-             <property>hibernate.connection.datasource</property>
-           </entry>
-           <entry>
-             <emphasis>datasource JNDI name</emphasis>
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.jndi.url</property>
-           </entry>
-           <entry>
-             <emphasis>URL of the JNDI provider</emphasis> (optional)
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.jndi.class</property>
-           </entry>
-           <entry>
-             <emphasis>class of the JNDI <literal>InitialContextFactory</literal></emphasis> (optional)
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.connection.username</property>
-           </entry>
-           <entry>
-             <emphasis>database user</emphasis> (optional)
-           </entry>
-        </row>
-        <row>
-           <entry>
-             <property>hibernate.connection.password</property>
-           </entry>
-           <entry>
-             <emphasis>database user password</emphasis> (optional)
-           </entry>
-        </row>
-        </tbody>
-        </tgroup>
-     </table>
-
-     <para>
-        Here's an example <filename>hibernate.properties</filename> file for an application server provided JNDI
-        datasource:
-     </para>
-
-     <programlisting><![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test
-hibernate.transaction.factory_class = \
-   org.hibernate.transaction.JTATransactionFactory
-hibernate.transaction.manager_lookup_class = \
-   org.hibernate.transaction.JBossTransactionManagerLookup
-hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
-
-     <para>
-        JDBC connections obtained from a JNDI datasource will automatically participate
-        in the container-managed transactions of the application server.
-     </para>
-
-     <para>
-        Arbitrary connection properties may be given by prepending "<literal>hibernate.connection</literal>" to the
-        connection property name. For example, you may specify a <property>charSet</property>
-        connection property using <property>hibernate.connection.charSet</property>.
-     </para>
-
-     <para>
-        You may define your own plugin strategy for obtaining JDBC connections by implementing the
-        interface <interfacename>org.hibernate.connection.ConnectionProvider</interfacename>, and specifying your
-        custom implementation via the <property>hibernate.connection.provider_class</property> property.
-     </para>
-
-   </sect1>
-
-   <sect1 id="configuration-optional" revision="1">
-     <title>Optional configuration properties</title>
-    
-     <para>
-        There are a number of other properties that control the behaviour of Hibernate at runtime. All are optional
-        and have reasonable default values.
-     </para>
-
-     <para>
-      <emphasis>Warning: some of these properties are "system-level" only.</emphasis> System-level properties can
-        be set only via <literal>java -Dproperty=value</literal> or <filename>hibernate.properties</filename>. They
-        may <emphasis>not</emphasis> be set by the other techniques described above.
-     </para>
-
-     <table frame="topbot" id="configuration-optional-properties" revision="8">
-        <title>Hibernate Configuration Properties</title>
-        <tgroup cols="2">
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-           <tbody>
-             <row>
-                <entry>
-                   <property>hibernate.dialect</property>
-                </entry>
-                <entry>
-                   The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</classname> which
-                   allows Hibernate to generate SQL optimized for a particular relational database.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>full.classname.of.Dialect</literal>
-                   </para>
-                   <para>
-                     In most cases Hibernate will actually be able to chose the correct
-                     <classname>org.hibernate.dialect.Dialect</classname> implementation to use based on the
-                     <literal>JDBC metadata</literal> returned by the JDBC driver.
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.show_sql</property>
-                </entry>
-                <entry>
-                   Write all SQL statements to console. This is an alternative
-                   to setting the log category <literal>org.hibernate.SQL</literal>
-                   to <literal>debug</literal>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.format_sql</property>
-                </entry>
-                <entry>
-                   Pretty print the SQL in the log and console.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.default_schema</property>
-                </entry>
-                <entry>
-                   Qualify unqualified table names with the given schema/tablespace
-                   in generated SQL.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>SCHEMA_NAME</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.default_catalog</property>
-                </entry>
-                <entry>
-                   Qualify unqualified table names with the given catalog
-                   in generated SQL.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>CATALOG_NAME</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.session_factory_name</property>
-                </entry>
-                <entry>
-                   The <interfacename>org.hibernate.SessionFactory</interfacename> will be automatically
-                   bound to this name in JNDI after it has been created.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>jndi/composite/name</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.max_fetch_depth</property>
-                </entry>
-                <entry>
-                   Set a maximum "depth" for the outer join fetch tree
-                   for single-ended associations (one-to-one, many-to-one).
-                   A <literal>0</literal> disables default outer join fetching.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     recommended values between <literal>0</literal> and
-                     <literal>3</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.default_batch_fetch_size</property>
-                </entry>
-                <entry>
-                   Set a default size for Hibernate batch fetching of associations.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     recommended values <literal>4</literal>, <literal>8</literal>,
-                     <literal>16</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.default_entity_mode</property>
-                </entry>
-                <entry>
-                   Set a default mode for entity representation for all sessions
-                   opened from this <literal>SessionFactory</literal>
-                   <para>
-                     <literal>dynamic-map</literal>, <literal>dom4j</literal>,
-                     <literal>pojo</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.order_updates</property>
-                </entry>
-                <entry>
-                   Force Hibernate to order SQL updates by the primary key value
-                   of the items being updated. This will result in fewer transaction
-                   deadlocks in highly concurrent systems.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.generate_statistics</property>
-                </entry>
-                <entry>
-                   If enabled, Hibernate will collect statistics useful for
-                   performance tuning.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.use_identifier_rollback</property>
-                </entry>
-                <entry>
-                   If enabled, generated identifier properties will be
-                   reset to default values when objects are deleted.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.use_sql_comments</property>
-                </entry>
-                <entry>
-                   If turned on, Hibernate will generate comments inside the SQL, for
-                   easier debugging, defaults to <literal>false</literal>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-           </tbody>
-        </tgroup>
-     </table>
-
-     <table frame="topbot" id="configuration-jdbc-properties" revision="8">
-        <title>Hibernate JDBC and Connection Properties</title>
-        <tgroup cols="2">
-<!--
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
--->
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-           <tbody>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.fetch_size</property>
-                </entry>
-                <entry>
-                   A non-zero value determines the JDBC fetch size (calls
-                   <literal>Statement.setFetchSize()</literal>).
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.batch_size</property>
-                </entry>
-                <entry>
-                   A non-zero value enables use of JDBC2 batch updates by Hibernate.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     recommended values between <literal>5</literal> and <literal>30</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.batch_versioned_data</property>
-                </entry>
-                <entry>
-                   Set this property to <literal>true</literal> if your JDBC driver returns
-                   correct row counts from <literal>executeBatch()</literal> (it is usually
-                   safe to turn this option on). Hibernate will then use batched DML for
-                   automatically versioned data. Defaults to <literal>false</literal>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.factory_class</property>
-                </entry>
-                <entry>
-                   Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. Most applications
-                   will not need this configuration property.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>classname.of.BatcherFactory</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.use_scrollable_resultset</property>
-                </entry>
-                <entry>
-                   Enables use of JDBC2 scrollable resultsets by Hibernate.
-                   This property is only necessary when using user supplied
-                   JDBC connections, Hibernate uses connection metadata otherwise.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.use_streams_for_binary</property>
-                </entry>
-                <entry>
-                   Use streams when writing/reading <literal>binary</literal> or <literal>serializable</literal>
-                   types to/from JDBC. <emphasis>*system-level property*</emphasis>
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jdbc.use_get_generated_keys</property>
-                </entry>
-                <entry>
-                   Enable use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal>
-                   to retrieve natively generated keys after insert. Requires JDBC3+ driver
-                   and JRE1.4+, set to false if your driver has problems with the Hibernate
-                   identifier generators. By default, tries to determine the driver capabilities
-                   using connection metadata.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true|false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.connection.provider_class</property>
-                </entry>
-                <entry>
-                   The classname of a custom <interfacename>org.hibernate.connection.ConnectionProvider</interfacename>
-                   which provides JDBC connections to Hibernate.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>classname.of.ConnectionProvider</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-             <entry>
-                <property>hibernate.connection.isolation</property>
-             </entry>
-             <entry>
-                Set the JDBC transaction isolation level. Check <interfacename>java.sql.Connection</interfacename>
-                for meaningful values but note that most databases do not support all isolation levels and some
-                define additional, non-standard isolations.
-                <para>
-                   <emphasis role="strong">eg.</emphasis>
-                   <literal>1, 2, 4, 8</literal>
-                </para>
-             </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.connection.autocommit</property>
-                </entry>
-                <entry>
-                   Enables autocommit for JDBC pooled connections (not recommended).
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.connection.release_mode</property>
-                </entry>
-                <entry>
-                   Specify when Hibernate should release JDBC connections. By default,
-                   a JDBC connection is held until the session is explicitly closed or
-                   disconnected. For an application server JTA datasource, you should use
-                   <literal>after_statement</literal> to aggressively release connections
-                   after every JDBC call. For a non-JTA connection, it often makes sense to
-                   release the connection at the end of each transaction, by using
-                   <literal>after_transaction</literal>. <literal>auto</literal> will
-                   choose <literal>after_statement</literal> for the JTA and CMT transaction
-                   strategies and <literal>after_transaction</literal> for the JDBC
-                   transaction strategy.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>auto</literal> (default) | <literal>on_close</literal> |
-                     <literal>after_transaction</literal> | <literal>after_statement</literal>
-                   </para>
-                   <para>
-                     Note that this setting only affects <literal>Session</literal>s returned from
-                     <literal>SessionFactory.openSession</literal>. For <literal>Session</literal>s
-                     obtained through <literal>SessionFactory.getCurrentSession</literal>, the
-                     <literal>CurrentSessionContext</literal> implementation configured for use
-                     controls the connection release mode for those <literal>Session</literal>s.
-                     See <xref linkend="architecture-current-session"/>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</emphasis>
-                </entry>
-                <entry>
-                   Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis>
-                   to <literal>DriverManager.getConnection()</literal>.
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>
-                </entry>
-                <entry>
-                   Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to
-                   the JNDI <literal>InitialContextFactory</literal>.
-                </entry>
-             </row>
-           </tbody>
-        </tgroup>
-     </table>
-
-     <table frame="topbot" id="configuration-cache-properties" revision="7">
-        <title>Hibernate Cache Properties</title>
-        <tgroup cols="2">
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-           <tbody>
-              <row>
-                <entry>
-                   <literal>hibernate.cache.provider_class</literal>
-                </entry>
-                <entry>
-                   The classname of a custom <literal>CacheProvider</literal>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>classname.of.CacheProvider</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cache.use_minimal_puts</literal>
-                </entry>
-                <entry>
-                   Optimize second-level cache operation to minimize writes, at the
-                   cost of more frequent reads. This setting is most useful for
-                   clustered caches and, in Hibernate3, is enabled by default for
-                   clustered cache implementations.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true|false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cache.use_query_cache</literal>
-                </entry>
-                <entry>
-                   Enable the query cache, individual queries still have to be set cachable.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true|false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cache.use_second_level_cache</literal>
-                </entry>
-                <entry>
-                   May be used to completely disable the second level cache, which is enabled
-                   by default for classes which specify a <literal>&lt;cache&gt;</literal>
-                   mapping.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true|false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cache.query_cache_factory</literal>
-                </entry>
-                <entry>
-                   The classname of a custom <literal>QueryCache</literal> interface,
-                   defaults to the built-in <literal>StandardQueryCache</literal>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>classname.of.QueryCache</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cache.region_prefix</literal>
-                </entry>
-                <entry>
-                   A prefix to use for second-level cache region names.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>prefix</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cache.use_structured_entries</literal>
-                </entry>
-                <entry>
-                   Forces Hibernate to store data in the second-level cache
-                   in a more human-friendly format.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true|false</literal>
-                   </para>
-                </entry>
-             </row>
-           </tbody>
-        </tgroup>
-     </table>
-
-     <table frame="topbot" id="configuration-transaction-properties" revision="9">
-        <title>Hibernate Transaction Properties</title>
-        <tgroup cols="2">
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-           <tbody>
-             <row>
-                <entry>
-                   <literal>hibernate.transaction.factory_class</literal>
-                </entry>
-                <entry>
-                   The classname of a <literal>TransactionFactory</literal>
-                   to use with Hibernate <literal>Transaction</literal> API
-                   (defaults to <literal>JDBCTransactionFactory</literal>).
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>classname.of.TransactionFactory</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>jta.UserTransaction</literal>
-                </entry>
-                <entry>
-                   A JNDI name used by <literal>JTATransactionFactory</literal> to
-                   obtain the JTA <literal>UserTransaction</literal> from the
-                   application server.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>jndi/composite/name</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.transaction.manager_lookup_class</literal>
-                </entry>
-                <entry>
-                   The classname of a <literal>TransactionManagerLookup</literal>
-                   - required when JVM-level caching is enabled or when using hilo
-                   generator in a JTA environment.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>classname.of.TransactionManagerLookup</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.transaction.flush_before_completion</literal>
-                </entry>
-                <entry>
-                   If enabled, the session will be automatically flushed during the
-                   before completion phase of the transaction. Built-in and
-                   automatic session context management is preferred, see
-                   <xref linkend="architecture-current-session"/>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.transaction.auto_close_session</literal>
-                </entry>
-                <entry>
-                   If enabled, the session will be automatically closed during the
-                   after completion phase of the transaction. Built-in and
-                   utomatic session context management is preferred, see
-                   <xref linkend="architecture-current-session"/>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-           </tbody>
-        </tgroup>
-     </table>
-
-     <table frame="topbot" id="configuration-misc-properties" revision="10">
-        <title>Miscellaneous Properties</title>
-        <tgroup cols="2">
-           <colspec colname="c1" colwidth="1*"/>
-           <colspec colname="c2" colwidth="1*"/>
-           <thead>
-             <row>
-                <entry>Property name</entry>
-                <entry>Purpose</entry>
-             </row>
-           </thead>
-           <tbody>
-             <row>
-                <entry>
-                   <literal>hibernate.current_session_context_class</literal>
-                </entry>
-                <entry>
-                   Supply a (custom) strategy for the scoping of the "current"
-                   <literal>Session</literal>. See
-                   <xref linkend="architecture-current-session"/> for more
-                   information about the built-in strategies.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>jta</literal> | <literal>thread</literal> |
-                     <literal>managed</literal> | <literal>custom.Class</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.query.factory_class</literal>
-                </entry>
-                <entry>
-                   Chooses the HQL parser implementation.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or
-                     <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.query.substitutions</literal>
-                </entry>
-                <entry>
-                   Mapping from tokens in Hibernate queries to SQL tokens
-                   (tokens might be function or literal names, for example).
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.hbm2ddl.auto</literal>
-                </entry>
-                <entry>
-                   Automatically validate or export schema DDL to the database
-                   when the <literal>SessionFactory</literal> is created. With
-                   <literal>create-drop</literal>, the database schema will be
-                   dropped when the <literal>SessionFactory</literal> is closed
-                   explicitly.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>validate</literal> | <literal>update</literal> |
-                     <literal>create</literal> | <literal>create-drop</literal>
-                   </para>
-                </entry>
-             </row>
-             <row>
-                <entry>
-                   <literal>hibernate.cglib.use_reflection_optimizer</literal>
-                </entry>
-                <entry>
-                   Enables use of CGLIB instead of runtime reflection (System-level
-                   property). Reflection can sometimes be useful when troubleshooting,
-                   note that Hibernate always requires CGLIB even if you turn off the
-                   optimizer. You can not set this property in <literal>hibernate.cfg.xml</literal>.
-                   <para>
-                     <emphasis role="strong">eg.</emphasis>
-                     <literal>true</literal> | <literal>false</literal>
-                   </para>
-                </entry>
-             </row>
-           </tbody>
-        </tgroup>
-     </table>
-
-     <sect2 id="configuration-optional-dialects" revision="1">
-        <title>SQL Dialects</title>
-
-        <para>
-           You should always set the <literal>hibernate.dialect</literal> property to the correct
-           <literal>org.hibernate.dialect.Dialect</literal> subclass for your database. If you
-           specify a dialect, Hibernate will use sensible defaults for some of the
-           other properties listed above, saving you the effort of specifying them manually.
-        </para>
-
-        <table frame="topbot" id="sql-dialects" revision="2">
-           <title>Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)</title>
-           <tgroup cols="2">
-<!--
-             <colspec colwidth="1*"/>
-             <colspec colwidth="2.5*"/>
--->
-             <thead>
-                <row>
-                   <entry>RDBMS</entry>
-                   <entry>Dialect</entry>
-                </row>
-             </thead>
-             <tbody>
-                <row>
-                   <entry>DB2</entry> <entry><literal>org.hibernate.dialect.DB2Dialect</literal></entry>
-                </row>
-                <row>
-                   <entry>DB2 AS/400</entry> <entry><literal>org.hibernate.dialect.DB2400Dialect</literal></entry>
-                </row>
-                <row>
-                   <entry>DB2 OS390</entry> <entry><literal>org.hibernate.dialect.DB2390Dialect</literal></entry>
-                </row>
-                <row>
-                   <entry>PostgreSQL</entry> <entry><literal>org.hibernate.dialect.PostgreSQLDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>MySQL</entry> <entry><literal>org.hibernate.dialect.MySQLDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>MySQL with InnoDB</entry> <entry><literal>org.hibernate.dialect.MySQLInnoDBDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>MySQL with MyISAM</entry> <entry><literal>org.hibernate.dialect.MySQLMyISAMDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Oracle (any version)</entry> <entry><literal>org.hibernate.dialect.OracleDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Oracle 9i/10g</entry> <entry><literal>org.hibernate.dialect.Oracle9Dialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Sybase</entry> <entry><literal>org.hibernate.dialect.SybaseDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Sybase Anywhere</entry> <entry><literal>org.hibernate.dialect.SybaseAnywhereDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Microsoft SQL Server</entry> <entry><literal>org.hibernate.dialect.SQLServerDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>SAP DB</entry> <entry><literal>org.hibernate.dialect.SAPDBDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Informix</entry> <entry><literal>org.hibernate.dialect.InformixDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>HypersonicSQL</entry> <entry><literal>org.hibernate.dialect.HSQLDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Ingres</entry> <entry><literal>org.hibernate.dialect.IngresDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Progress</entry> <entry><literal>org.hibernate.dialect.ProgressDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Mckoi SQL</entry> <entry><literal>org.hibernate.dialect.MckoiDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Interbase</entry> <entry><literal>org.hibernate.dialect.InterbaseDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Pointbase</entry> <entry><literal>org.hibernate.dialect.PointbaseDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>FrontBase</entry> <entry><literal>org.hibernate.dialect.FrontbaseDialect</literal></entry>
-                </row>
-                <row>
-                   <entry>Firebird</entry> <entry><literal>org.hibernate.dialect.FirebirdDialect</literal></entry>
-                </row>
-             </tbody>
-           </tgroup>
-        </table>
-
-     </sect2>
-
-     <sect2 id="configuration-optional-outerjoin" revision="4">
-        <title>Outer Join Fetching</title>
-
-        <para>
-           If your database supports ANSI, Oracle or Sybase style outer joins, <emphasis>outer join
-           fetching</emphasis> will often increase performance by limiting the number of round
-           trips to and from the database (at the cost of possibly more work performed by
-           the database itself). Outer join fetching allows a whole graph of objects connected
-           by many-to-one, one-to-many, many-to-many and one-to-one associations to be retrieved
-           in a single SQL <literal>SELECT</literal>.
-        </para>
-
-        <para>
-           Outer join fetching may be disabled <emphasis>globally</emphasis> by setting
-           the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</literal>.
-           A setting of <literal>1</literal> or higher enables outer join fetching for
-           one-to-one and many-to-one associations which have been mapped with
-           <literal>fetch="join"</literal>.
-        </para>
-
-        <para>
-           See <xref linkend="performance-fetching"/> for more information.
-        </para>
-
-     </sect2>
-
-     <sect2 id="configuration-optional-binarystreams" revision="1">
-        <title>Binary Streams</title>
-
-        <para>
-           Oracle limits the size of <literal>byte</literal> arrays that may
-           be passed to/from its JDBC driver. If you wish to use large instances of
-           <literal>binary</literal> or <literal>serializable</literal> type, you should
-           enable <literal>hibernate.jdbc.use_streams_for_binary</literal>.
-           <emphasis>This is a system-level setting only.</emphasis>
-        </para>
-
-     </sect2>
-
-     <sect2 id="configuration-optional-cacheprovider" revision="2">
-        <title>Second-level and query cache</title>
-
-        <para>
-           The properties prefixed by <literal>hibernate.cache</literal>
-           allow you to use a process or cluster scoped second-level cache system
-           with Hibernate. See the <xref linkend="performance-cache"/> for
-           more details.
-        </para>
-
-     </sect2>
-
-     <sect2 id="configuration-optional-querysubstitution">
-        <title>Query Language Substitution</title>
-
-        <para>
-           You may define new Hibernate query tokens using <literal>hibernate.query.substitutions</literal>.
-           For example:
-        </para>
-
-        <programlisting>hibernate.query.substitutions true=1, false=0</programlisting>
-
-        <para>
-           would cause the tokens <literal>true</literal> and <literal>false</literal> to be translated to
-           integer literals in the generated SQL.
-        </para>
-
-        <programlisting>hibernate.query.substitutions toLowercase=LOWER</programlisting>
-
-        <para>
-           would allow you to rename the SQL <literal>LOWER</literal> function.
-        </para>
-
-     </sect2>
-
-     <sect2 id="configuration-optional-statistics" revision="2">
-        <title>Hibernate statistics</title>
-
-        <para>
-           If you enable <literal>hibernate.generate_statistics</literal>, Hibernate will
-           expose a number of metrics that are useful when tuning a running system via
-           <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be configured
-           to expose these statistics via JMX. Read the Javadoc of the interfaces in
-           <literal>org.hibernate.stats</literal> for more information.
-        </para>
-
-     </sect2>
-   </sect1>
-
-   <sect1 id="configuration-logging">
-     <title>Logging</title>
-
-     <para>
-        Hibernate logs various events using Apache commons-logging.
-     </para>
-
-     <para>
-        The commons-logging service will direct output to either Apache Log4j
-        (if you include <literal>log4j.jar</literal> in your classpath) or
-        JDK1.4 logging (if running under JDK1.4 or above). You may download
-        Log4j from <literal>http://jakarta.apache.org</literal>.
-        To use Log4j you will need to place a <literal>log4j.properties</literal>
-        file in your classpath, an example properties file is distributed with
-        Hibernate in the <literal>src/</literal> directory.
-     </para>
-    
-     <para>
-        We strongly recommend that you familiarize yourself with Hibernate's log
-        messages. A lot of work has been put into making the Hibernate log as
-        detailed as possible, without making it unreadable. It is an essential
-        troubleshooting device. The most interesting log categories are the
-        following:
-     </para>
-    
-        <table frame="topbot" id="log-categories" revision="2">
-           <title>Hibernate Log Categories</title>
-           <tgroup cols="2">
-             <colspec colwidth="1*"/>
-             <colspec colwidth="2.5*"/>
-             <thead>
-                <row>
-                   <entry>Category</entry>
-                   <entry>Function</entry>
-                </row>
-             </thead>
-             <tbody>
-                <row>
-                   <entry><literal>org.hibernate.SQL</literal></entry>
-                   <entry>Log all SQL DML statements as they are executed</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.type</literal></entry>
-                   <entry>Log all JDBC parameters</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.tool.hbm2ddl</literal></entry>
-                   <entry>Log all SQL DDL statements as they are executed</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.pretty</literal></entry>
-                   <entry>
-                     Log the state of all entities (max 20 entities) associated
-                     with the session at flush time
-                   </entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.cache</literal></entry>
-                   <entry>Log all second-level cache activity</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.transaction</literal></entry>
-                   <entry>Log transaction related activity</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.jdbc</literal></entry>
-                   <entry>Log all JDBC resource acquisition</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.hql.ast.AST</literal></entry>
-                   <entry>
-                     Log HQL and SQL ASTs during query parsing
-                   </entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate.secure</literal></entry>
-                   <entry>Log all JAAS authorization requests</entry>
-                </row>
-                <row>
-                   <entry><literal>org.hibernate</literal></entry>
-                   <entry>
-                     Log everything (a lot of information, but very useful for
-                     troubleshooting)
-                   </entry>
-                </row>
-             </tbody>
-           </tgroup>
-        </table>
-        
-     <para>
-        When developing applications with Hibernate, you should almost always work with
-        <literal>debug</literal> enabled for the category <literal>org.hibernate.SQL</literal>,
-        or, alternatively, the property <literal>hibernate.show_sql</literal> enabled.
-     </para>
-              
-    
-   </sect1>
-
-   <sect1 id="configuration-namingstrategy">
-     <title>Implementing a <literal>NamingStrategy</literal></title>
-
-     <para>
-        The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you
-        to specify a "naming standard" for database objects and schema elements.
-     </para>
-
-     <para>
-        You may provide rules for automatically generating database identifiers from
-        Java identifiers or for processing "logical" column and table names given in
-        the mapping file into "physical" table and column names. This feature helps
-        reduce the verbosity of the mapping document, eliminating repetitive noise
-        (<literal>TBL_</literal> prefixes, for example). The default strategy used by
-        Hibernate is quite minimal.
-     </para>
-
-     <para>
-        You may specify a different strategy by calling
-        <literal>Configuration.setNamingStrategy()</literal> before adding mappings:
-     </para>
-
-     <programlisting><![CDATA[SessionFactory sf = new Configuration()
-   .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)
-   .addFile("Item.hbm.xml")
-   .addFile("Bid.hbm.xml")
-   .buildSessionFactory();]]></programlisting>
-  
-     <para>
-        <literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in
-        strategy that might be a useful starting point for some applications.
-     </para>
-
-   </sect1>
-
-   <sect1 id="configuration-xmlconfig" revision="2">
-     <title>XML configuration file</title>
-
-     <para>
-        An alternative approach to configuration is to specify a full configuration in
-        a file named <literal>hibernate.cfg.xml</literal>. This file can be used as a
-        replacement for the <literal>hibernate.properties</literal> file or, if both
-        are present, to override properties.
-     </para>
-
-     <para>
-        The XML configuration file is by default expected to be in the root o
-        your <literal>CLASSPATH</literal>. Here is an example:
-     </para>
-
-     <programlisting><![CDATA[<?xml version='1.0' encoding='utf-8'?>
-<!DOCTYPE hibernate-configuration PUBLIC
-   "-//Hibernate/Hibernate Configuration DTD//EN"
-   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
-
-   <!-- a SessionFactory instance listed as /jndi/name -->
-   <session-factory
-     name="java:hibernate/SessionFactory">
-
-     <!-- properties -->
-     <property name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
-     <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
-     <property name="show_sql">false</property>
-     <property name="transaction.factory_class">
-