<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<chapter id="ref_guide_dbsetup">
    <title>
        JDBC
    </title>
    <indexterm zone="ref_guide_dbsetup">
        <primary>
            JDBC
        </primary>
    </indexterm>
    <para>
OpenJPA uses a relational database for object persistence.
It communicates with the database using the Java DataBase Connectivity (JDBC)
APIs. This chapter describes how to configure OpenJPA to work with the JDBC
driver for your database, and how to access JDBC functionality at runtime.
    </para>
    <section id="ref_guide_dbsetup_builtin">
        <title>
            Using the OpenJPA DataSource
        </title>
        <indexterm zone="ref_guide_dbsetup_builtin">
            <primary>
                DataSource
            </primary>
            <secondary>
                OpenJPA
            </secondary>
        </indexterm>
        <indexterm>
            <primary>
                connections
            </primary>
            <seealso>
                DataSource
            </seealso>
        </indexterm>
        <para>
OpenJPA defines a <classname>org.apache.openjpa.jdbc.schema.DriverDataSource</classname> interface, which provides a simple <classname>javax.sql.DataSource</classname> wrapper implementation for the normal cases where <literal>openjpa.ConnectionDriverName</literal> refers to a <classname>java.sql.Driver</classname>.
See <link linkend="openjpa.jdbc.DriverDataSource">
<literal>openjpa.jdbc.DriverDataSource</literal></link> for the list of
provided implementations.
        </para>
        <section id="ref_guide_dbsetup_auto">
            <title>
                Optional Connection Pooling
            </title>
            <indexterm zone="ref_guide_dbsetup_auto">
                <primary>
                    Pooling
                </primary>
                <secondary>
                    DataSource
                </secondary>
            </indexterm>
            <indexterm>
                <primary>
                    DBCP
                </primary>
                <seealso>
                    DataSource
                </seealso>
            </indexterm>
            <para>
                Starting with OpenJPA 2.1, a new <classname>org.apache.openjpa.jdbc.schema.AutoDriverDataSource</classname>
                is provided as the default, which will automatically
                select between the old <classname>SimpleDriverDataSource</classname> and a new
                <classname>DBCPDriverDataSource</classname> implementation based on if
                <ulink url="https://commons.apache.org/dbcp/">Apache Commons DBCP2</ulink>
                has been provided on the classpath and OpenJPA is not running in a container
                managed mode or with managed transactions.  Note, that only the
                <literal>openjpa-all.jar</literal> includes Commons DBCP2, so you will need to
                include the <literal>commons-dbcp2.jar</literal> from the OpenJPA binary
                distribution if you are using the normal <literal>openjpa.jar</literal>.
            </para>
            <para>
                To disable the automatic usage of Apache Commons DBCP when it is discovered
                on the classpath, set
                <literal>openjpa.jdbc.DriverDataSource=simple</literal>, which will revert
                OpenJPA to the prior behavior of using <classname>org.apache.openjpa.jdbc.schema.SimpleDriverDataSource</classname>
            </para>
            <para>
To force usage of Apache Commons DBCP2, which will cause a fatal exception to
be thrown if it cannot be loaded from the classpath, set
<literal>openjpa.jdbc.DriverDataSource=dbcp</literal>, which will cause
OpenJPA to use <classname>org.apache.commons.dbcp2.BasicDataSource</classname>
            </para>
        </section>
        <section id="ref_guide_dbsetup_config">
            <title>
                Configuring the OpenJPA DataSource
            </title>
            <indexterm zone="ref_guide_dbsetup_config">
                <primary>
                    Configure
                </primary>
                <secondary>
                    DataSource
                </secondary>
            </indexterm>
            <para>
If you choose to use OpenJPA's <classname>DataSource</classname>,
then you must specify the following properties:
            </para>
            <itemizedlist>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionUserName
                    </primary>
                </indexterm>
<literal>openjpa.ConnectionUserName</literal>: The JDBC user name for
connecting to the database.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionPassword
                    </primary>
                </indexterm>
<literal>openjpa.ConnectionPassword</literal>: The JDBC password for the above
user.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionURL
                    </primary>
                </indexterm>
<literal>openjpa.ConnectionURL</literal>: The JDBC URL for the database.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionDriverName
                    </primary>
                </indexterm>
<literal>openjpa.ConnectionDriverName</literal>: The JDBC driver class.
                </para>
              </listitem>
            </itemizedlist>
            <para>
To configure advanced features, use the following optional
properties. The syntax of these property strings follows the syntax of OpenJPA
plugin parameters described in <xref linkend="ref_guide_conf_plugins"/>.
            </para>
            <itemizedlist>
              <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionProperties
                    </primary>
                </indexterm>
<link linkend="openjpa.ConnectionProperties">
<literal>openjpa.ConnectionProperties</literal></link>: If the listed driver is an
instance of <classname>java.sql.Driver</classname>, this string will be parsed
into a <classname>Properties</classname> instance, which will then be used to
obtain database connections through the <methodname>Driver.connect(String url,
Properties props)</methodname> method. If, on the other hand, the listed driver
is a <classname> javax.sql.DataSource</classname>, the string will be treated
as a plugin properties string, and matched to the bean setter methods of the
<classname>DataSource</classname> instance.
                </para>
              </listitem>
              <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionFactoryProperties
                    </primary>
                </indexterm>
<link linkend="openjpa.ConnectionFactoryProperties">
<literal>openjpa.ConnectionFactoryProperties</literal></link>: OpenJPA's built-in
<classname>DataSource</classname> allows you to set the following options via
this plugin string:
                </para>
                <itemizedlist>
                    <listitem>
                        <para>
                        <indexterm>
                            <primary>
                                JDBC
                            </primary>
                            <secondary>
                                QueryTimeout
                            </secondary>
                        </indexterm>
<literal>QueryTimeout</literal>: The maximum number of seconds the JDBC driver
will wait for a statement to execute.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                        <indexterm>
                            <primary>
                                SQL
                            </primary>
                            <secondary>
                                PrettyPrint
                            </secondary>
                        </indexterm>
<literal>PrettyPrint</literal>: Boolean indicating whether to pretty-print
logged SQL statements.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                        <indexterm>
                            <primary>
                                SQL
                            </primary>
                            <secondary>
                                PrettyPrintLineLength
                            </secondary>
                        </indexterm>
<literal>PrettyPrintLineLength</literal>: The maximum number of characters in
each pretty-printed SQL line.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                        <indexterm>
                            <primary>
                                SQL
                            </primary>
                            <secondary>
                                PrintParameters
                            </secondary>
                        </indexterm>
<literal>PrintParameters</literal>: A boolean indicating whether SQL parameter
values will be included in exception text and when logging is enabled. Since
the parameter values may contain sensitive information the default value is
false.
                        </para>
                    </listitem>
                </itemizedlist>
              </listitem>
            </itemizedlist>
            <example id="ref_guide_dbsetup_builtin_ex">
              <title>
                Properties for the OpenJPA DataSource
              </title>
<programlisting>
&lt;property name="openjpa.ConnectionUserName" value="user"/&gt;
&lt;property name="openjpa.ConnectionPassword" value="pass"/&gt;
&lt;property name="openjpa.ConnectionURL" value="jdbc:hsqldb:db-hypersonic"/&gt;
&lt;property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver"/&gt;
&lt;property name="openjpa.ConnectionFactoryProperties"
    value="PrettyPrint=true, PrettyPrintLineLength=80, PrintParameters=true"/&gt;
</programlisting>
            </example>
        </section>
        <section id="ref_guide_dbsetup_dbcp">
            <title>
                Configuring Apache Commons DBCP
            </title>
            <indexterm zone="ref_guide_dbsetup_dbcp">
                <primary>
                    DBCP
                </primary>
                <secondary>
                    DataSource
                </secondary>
            </indexterm>
            <para>
Additional Commons DBCP arguments can be provided in
<literal>openjpa.connectionProperties</literal>, such as:
<programlisting>
    MaxTotal=10,MaxIdle=5,MinIdle=2,MaxWait=60000
</programlisting>
Please visit the Commons DBCP website for the entire list of
<ulink url="http://commons.apache.org/dbcp/configuration.html">configuration options</ulink> and explanations.
            </para>
        </section>
    </section>

    <section id="ref_guide_dbsetup_thirdparty">
        <title>
            Using a Third-Party DataSource
        </title>
        <indexterm zone="ref_guide_dbsetup_builtin">
            <primary>
                DataSource
            </primary>
            <secondary>
                third party
            </secondary>
        </indexterm>
        <para>
You can use OpenJPA with any third-party <classname>javax.sql.DataSource
</classname>. There are multiple ways of telling OpenJPA about a <classname>
DataSource</classname>:
        </para>
        <itemizedlist>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionFactory
                    </primary>
                </indexterm>
Set the <classname>DataSource</classname> into the map passed to <methodname>
Persistence.createEntityManagerFactory</methodname> under the
<link linkend="openjpa.ConnectionFactory"><literal>openjpa.ConnectionFactory
</literal></link> key.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionFactoryName
                    </primary>
                </indexterm>
Bind the <classname>DataSource</classname> into JNDI, and then specify its
location in the <literal>jta-data-source</literal> or
<literal>non-jta-data-source</literal> element of the
<link linkend="jpa_overview_persistence_xml">JPA XML format</link> (depending on
whether the <classname>DataSource</classname> is managed by JTA), or in the
<link linkend="openjpa.ConnectionFactoryName">
<literal>openjpa.ConnectionFactoryName</literal></link> property.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ConnectionDriverName
                    </primary>
                </indexterm>
Specify the full class name of the <classname>DataSource</classname>
implementation in the <link linkend="openjpa.ConnectionDriverName">
<literal>openjpa.ConnectionDriverName</literal></link> property in place of a JDBC
driver. In this configuration OpenJPA will instantiate an instance of the named
class via reflection. It will then configure the <classname>DataSource
</classname> with the properties in the
<link linkend="openjpa.ConnectionProperties">
<literal>openjpa.ConnectionProperties</literal></link> setting.
                </para>
            </listitem>
        </itemizedlist>
        <para>
The features of OpenJPA's own <classname>DataSource</classname> can
also be used with third-party implementations. OpenJPA layers on top of the
third-party <classname>DataSource</classname> to provide the extra
functionality. To configure these features use the
<link linkend="openjpa.ConnectionFactoryProperties">
<literal>openjpa.ConnectionFactoryProperties</literal></link> property described
in the previous section.
        </para>
        <example id="ref_guide_dbsetup_thirdparty_ex">
            <title>
                Properties File for a Third-Party DataSource
            </title>
<programlisting>
&lt;property name="openjpa.ConnectionDriverName" value="oracle.jdbc.pool.OracleDataSource"/&gt;
&lt;property name="openjpa.ConnectionProperties"
    value="PortNumber=1521, ServerName=saturn, DatabaseName=solarsid, DriverType=thin"/&gt;
&lt;property name="openjpa.ConnectionFactoryProperties" value="QueryTimeout=5000"/&gt;
</programlisting>
            <para>
You can also force the Apache Commons DBCP BasicDataSource to be used for
connection pooling when provided on the classpath by substituting it as the
<literal>ConnectionDriverName</literal> and setting
<literal>ConnectionProperties=DriverClassName</literal> to the actual JDBC
driver value -
            </para>
<programlisting>
&lt;property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/&gt;
&lt;property name="openjpa.ConnectionProperties"
    value="DriverClassName=oracle.jdbc.pool.OracleDataSource, PortNumber=1521, ServerName=saturn, DatabaseName=solarsid, DriverType=thin, MaxIdle=0"/&gt;
&lt;property name="openjpa.ConnectionFactoryProperties" value="QueryTimeout=5000"/&gt;
</programlisting>
        </example>
        <section id="ref_guide_dbsetup_thirdparty_enlist">
            <title>
                Managed and XA DataSources
            </title>
            <indexterm zone="ref_guide_dbsetup_thirdparty_enlist">
                <primary>
                    DataSource
                </primary>
                <secondary>
                    managed
                </secondary>
            </indexterm>
            <indexterm zone="ref_guide_dbsetup_thirdparty_enlist">
                <primary>
                    DataSource
                </primary>
                <secondary>
                    XA
                </secondary>
            </indexterm>
            <para>
            <indexterm>
                <primary>
                    ConnectionFactoryMode
                </primary>
            </indexterm>
Certain application servers automatically enlist their <classname> DataSource
</classname>s in global transactions. When this is the case, OpenJPA should not
attempt to commit the underlying connection, leaving JDBC transaction completion
to the application server. To notify OpenJPA that your third-party <classname>
DataSource</classname> is managed by the application server, use the
<literal>jta-data-source</literal> element of your <filename>
persistence.xml</filename> file or set the
<link linkend="openjpa.ConnectionFactoryMode">
<literal>openjpa.ConnectionFactoryMode</literal></link> property to
<literal>managed</literal>.
            </para>
            <para>
Note that OpenJPA can only use managed <classname>DataSource</classname>s when
it is also integrating with the application server's managed transactions. Also
note that all XA <classname>DataSource</classname>s are enlisted, and you must
set this property when using any XA <classname> DataSource</classname>.
            </para>
            <para>
When using a managed <classname>DataSource</classname>, you should also
configure a second unmanaged <classname>DataSource</classname> that OpenJPA can
use to perform tasks that are independent of the global transaction. The most
common of these tasks is updating the sequence table OpenJPA uses to generate
unique primary key values for your datastore identity objects. Configure the
second <classname>DataSource</classname> using the <literal>non-jta-data-source
</literal> <filename>persistence.xml</filename> element, or OpenJPA's various
"2" connection properties, such as <literal>openjpa.ConnectionFactory2Name
</literal> or <literal>openjpa.Connection2DriverName</literal>. These
properties are outlined in <xref linkend="ref_guide_conf"/>.
            </para>
            <example id="ref_guide_enterprise_xa_conf_ex">
                <title>
                    Managed DataSource Configuration
                </title>
<programlisting>
&lt;!-- managed DataSource --&gt;
&lt;jta-data-source&gt;java:/OracleXASource&lt;/jta-data-source&gt;
&lt;properties&gt;
    &lt;!-- use OpenJPA's built-in DataSource for unmanaged connections --&gt;
    &lt;property name="openjpa.Connection2UserName" value="scott"/&gt;
    &lt;property name="openjpa.Connection2Password" value="tiger"/&gt;
    &lt;property name="openjpa.Connection2URL" value="jdbc:oracle:thin:@CROM:1521:OpenJPADB"/&gt;
    &lt;property name="openjpa.Connection2DriverName" value="oracle.jdbc.driver.OracleDriver"/&gt;
&lt;/properties&gt;
</programlisting>
            </example>
        </section>
        <section id="ref_guide_dbsetup_setDSatRuntime">
            <title>Setting the DataSource at runtime</title>
            <indexterm zone="ref_guide_dbsetup_setDSatRuntime">
                <primary>connections</primary>
                <secondary>override configuration</secondary>
            </indexterm>
            <para>
As mentioned above, the JTA and Non-JTA DataSources may be passed in as configuration properties
at EntityManagerFactory creation. Either the JPA standard properties (
<literal>javax.persistence.jtaDataSource</literal>, <literal>java.persistence.nonJtaDataSource</literal>)
or their OpenJPA specific equivalents (<literal>openjpa.ConnectionFactoryName</literal>,
<literal>openjpa.ConnectionFactory2Name</literal>) may be used. One use case for this function is to
store production connection information in configuration files but override the value when testing.
            </para>
            <para>
            <example>
                <title>
                    Setting DataSource at Runtime
                </title>
                <programlisting>Map&lt;Object,Object&gt; props = new HashMap&lt;Object,Object&gt;();
props.put("javax.persistence.jtaDataSource", "jdbc/myDataSource");
props.put("javax.persistence.nonJtaDataSource", "jdbc/myNonJTADataSource");
emf = Persistence.createEntityManagerFactory("example", props);</programlisting>
            </example>
            </para>
                <section id="ref_guide_dbsetup_setDSPerEM">
                <title>Using different DataSources for each EntityManager</title>
                <para>
The JPA specification allows the DataSource (ConnectionFactory) to be specified on the
EntityManagerFactory. OpenJPA extends this support and allows each EntityManager to override the
DataSource from the EntityManagerFactory. It's expected that the EntityManagerFactory will also be
configured with a valid JTA / Non-JTA DataSource. The DataSource configured on the
EntityManagerFactory will be used to obtain a DBDictionary and (rarely) to gather some information
about the database in use (e.g. version, JDBC driver version).
                </para>
                <para>
                    If the EntityManagerFactory is not configured with a valid DataSource there are
                    a few additional caveats.
                    <itemizedlist>
                        <listitem><para>The <literal>openjpa.DBDictionary</literal> property must be
                        used to ensure the correct DBDictionary is used.</para></listitem>
                        <listitem><para>OpenJPA will always attempt to obtain a DataSource from JNDI
                        based on the configuration for the EntityManagerFactory. When a JNDI name is
                        specified on the EntityManager this lookup happens slightly earlier than
                        normal. If the lookup fails the JNDI name provided at EntityManager creation
                        will be set into the EntityManagerFactory's configuration and used in
                        subsequent attempts. </para></listitem>
                    </itemizedlist>
                </para>
                <section id="ref_guide_dbsetup_setDSBenefits">
                    <title>Benefits</title>
                    <para>
                    In effect this option allows a single set of entity definitions to be shared
                    between multiple database instances or schemas within an instance. This can be
                    highly beneficial when there are a large number of entity definitions (e.g. >
                    200), or a large number of databases / schemas in use.
                    </para>
                </section>
                <section id="ref_guide_dbsetup_setDSLimitations">
                    <title>Limitations</title>
                    <para>
                        <itemizedlist>
                            <listitem>
                                <para>The same database type and version must be used by each
                                EntityManager. OpenJPA will use the same DBDictionary for each
                                EntityManager and will make no attempt to alter SQL syntax
                                between EntityManager instances.
                            </para>
                            </listitem>
                            <listitem><para>It is the application's responsibility to ensure
                            that the schema is identical on each database.</para></listitem>
                            <listitem><para>The application may not specify schema names for
                            individual entities.</para></listitem>
                            <listitem>
                                <para>The DataSource (ConnectionFactory) name may only be
                                specified when the EntityManager is created. The DataSource
                                may not be switched while an EntityManager is in use.
                                </para>
                            </listitem>
                            <listitem><para>The L2 cache (DataCache) should not be used if
                            different DataSources are specified for each EntityManager</para>
                            </listitem>
                            <listitem><para>SynchronizeMappings should not be used with this
                            feature.</para></listitem>
                            <listitem><para>Table and Sequence generators should not be used
                            with this feature.</para></listitem>
                            <listitem><para>It is not required, but is recommended that the
                            <literal>openjpa.DBDictionary</literal> property be specified when
                            using this feature</para></listitem>
                        </itemizedlist>
                    </para>
                </section>
                <section id="ref_guide_dbsetup_setDSError">
                    <title>Error handling</title>
                    <para>
                    If a JTA DataSource is not available when the EntityManager is created, an
                    <literal>IllegalArgumentException</literal> will be thrown.
                    The EntityManager will not fall back to the JTA DataSource defined in the
                    configuration.
                    </para>
                    <para>
                    The same logic applies if a Non-JTA DataSource is not available when the
                    EntityManager is created. OpenJPA will not fall back to the configured
                    Non-JTA DataSource.
                    </para>
                </section>
            </section>
        </section>
    </section>
    <section id="ref_guide_dbsetup_sqlconn">
        <title>
            Runtime Access to DataSource
        </title>
        <indexterm zone="ref_guide_dbsetup_sqlconn">
            <primary>
                connections
            </primary>
            <secondary>
                accessing DataSource
            </secondary>
        </indexterm>
        <indexterm zone="ref_guide_dbsetup_sqlconn">
            <primary>
                JDBC
            </primary>
            <secondary>
                accessing DataSource
            </secondary>
        </indexterm>
        <para>
The JPA standard defines how to access JDBC connections from enterprise beans.
OpenJPA also provides APIs to retrieve a connection directly from the <classname>
EntityManagerFactory</classname>'s <classname>DataSource</classname>.
        </para>
        <para>
The <methodname>EntityManager.unwrap(java.sql.Connection.class)</methodname> method
returns an <classname>EntityManager</classname>'s connection. If the <classname>
EntityManager</classname> does not already have a connection, it will obtain
one. The returned connection is only guaranteed to be transactionally consistent
with other <classname>EntityManager</classname> operations if the <classname>
EntityManager</classname> is in a managed or non-optimistic transaction, if the
<classname>EntityManager</classname> has flushed in the current transaction, or
if you have used the <methodname>OpenJPAEntityManager.beginStore</methodname>
method to ensure that a datastore transaction is in progress. Always close the
returned connection before attempting any other <classname>EntityManager
</classname> operations. OpenJPA will ensure that the underlying native
connection is not released if a datastore transaction is in progress.
        </para>
        <example id="ref_guide_dbsetup_conn_jpa">
            <title>
                Using the EntityManager's Connection
            </title>
<programlisting>
import java.sql.Connection;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

...

EntityManager em = emf.createEntityManager();
Connection conn = (Connection) em.unwrap(java.sql.Connection.class);

// do JDBC stuff

conn.close();
</programlisting>
        </example>
        <para>
The example below shows how to use a connection directly from the <classname>
DataSource</classname>, rather than using an <classname> EntityManager
</classname>'s connection.
        </para>
        <example id="ref_guide_dbsetup_conn_from_factory_jpa">
            <title>
                Using the EntityManagerFactory's DataSource
            </title>
<programlisting>
import java.sql.*;
import javax.sql.*;
import org.apache.openjpa.conf.*;
import org.apache.openjpa.persistence.*;

...

OpenJPAEntityManagerFactory kemf = OpenJPAPersistence.cast(emf);
OpenJPAConfiguration conf = kemf.getConfiguration();
DataSource dataSource = (DataSource) conf.getConnectionFactory();
Connection conn = dataSource.getConnection();

// do JDBC stuff

conn.close();
</programlisting>
        </example>
    </section>
    <section id="ref_guide_dbsetup_dbsupport">
        <title>
            Database Support
        </title>
        <indexterm zone="ref_guide_dbsetup_dbsupport">
            <primary>
                DBDictionary
            </primary>
        </indexterm>
        <indexterm zone="ref_guide_dbsetup_dbsupport">
            <primary>
                relational database
            </primary>
            <secondary>
                OpenJPA support
            </secondary>
            <seealso>
                DBDictionary
            </seealso>
        </indexterm>
        <para>
OpenJPA can take advantage of any JDBC 2.x compliant
driver, making almost any major database a candidate for use. See our officially
supported database list in <xref linkend="supported_databases"/> for more
information. Typically, OpenJPA auto-configures its JDBC behavior and SQL
dialect for your database, based on the values of your connection-related
configuration properties.
        </para>
        <para>
If OpenJPA cannot detect what type of database you are using, or if you are
using an unsupported database, you will have to tell OpenJPA what
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/DBDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.DBDictionary</classname></ulink> to use.
The <classname>DBDictionary</classname> abstracts away the differences between
databases. You can plug a dictionary into OpenJPA using the
<link linkend="openjpa.jdbc.DBDictionary"><literal>openjpa.jdbc.DBDictionary
</literal></link> configuration property. The built-in dictionaries are listed
below. If you are using an unsupported database, you may have to write your own
<classname>DBDictionary</classname> subclass, a simple process.
        </para>
        <itemizedlist>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Microsoft Access
                    </primary>
                </indexterm>
<literal>access</literal>: Dictionary for Microsoft Access. This is an alias
for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/AccessDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.AccessDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        DB2
                    </primary>
                </indexterm>
<literal>db2</literal>: Dictionary for IBM's DB2 database. This is an alias for
the <ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/DB2Dictionary.html">
<classname>org.apache.openjpa.jdbc.sql.DB2Dictionary</classname></ulink> class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Derby
                    </primary>
                </indexterm>
<literal>derby</literal>: Dictionary for the Apache Derby database. This is an
alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/DerbyDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.DerbyDictionary</classname> class.
</ulink>
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Empress
                    </primary>
                </indexterm>
<literal>empress</literal>: Dictionary for Empress database This is an alias
for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/EmpressDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.EmpressDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        FoxPro
                    </primary>
                </indexterm>
<literal>foxpro</literal>: Dictionary for Microsoft Visual FoxPro. This is an
alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/FoxProDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.FoxProDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        H2
                    </primary>
                </indexterm>
<literal>h2</literal>: Dictionary for the H2 Database Engine. This is an
alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/H2Dictionary.html">
<classname>org.apache.openjpa.jdbc.sql.H2Dictionary</classname></ulink> class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Hypersonic SQL
                    </primary>
                </indexterm>
<literal>hsql</literal>: Dictionary for the Hypersonic SQL database. This is an
alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/HSQLDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.HSQLDictionary</classname></ulink> class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Informix
                    </primary>
                </indexterm>
<literal>informix</literal>: Dictionary for the Informix database. This is an
alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/InformixDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.InformixDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Ingres
                    </primary>
                </indexterm>
<literal>ingres</literal>: Dictionary for Ingres. This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/IngresDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.IngresDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        JDataStore
                    </primary>
                </indexterm>
<literal>jdatastore</literal>: Dictionary for Borland JDataStore. This is an
alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/JDataStoreDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.JDataStoreDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        MariaDB
                    </primary>
                </indexterm>
<literal>mariadb</literal>: Dictionary for the MariaDB database. This is an alias
for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/MariaDBDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.MariaDBDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        MySQL
                    </primary>
                </indexterm>
<literal>mysql</literal>: Dictionary for the MySQL database. This is an alias
for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/MySQLDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.MySQLDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Oracle
                    </primary>
                </indexterm>
<literal>oracle</literal>: Dictionary for Oracle. This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/OracleDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.OracleDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Pointbase
                    </primary>
                </indexterm>
<literal>pointbase</literal>: Dictionary for Pointbase Embedded database. This
is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/PointbaseDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.PointbaseDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        PostgreSQL
                    </primary>
                </indexterm>
<literal>postgres</literal>: Dictionary for PostgreSQL. This is an alias for
the <ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/PostgresDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.PostgresDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        SolidDB
                    </primary>
                </indexterm>
<literal>soliddb</literal>: Dictionary for IBM's SolidDB database.
This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/SolidDBDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.SolidDBDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        SQL Server
                    </primary>
                </indexterm>
<literal>sqlserver</literal>: Dictionary for Microsoft's SQL Server database.
This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/SQLServerDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.SQLServerDictionary</classname></ulink>
class.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Sybase
                    </primary>
                </indexterm>
<literal>sybase</literal>: Dictionary for Sybase. This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/SybaseDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.SybaseDictionary</classname></ulink>
class.
                </para>
            </listitem>
        </itemizedlist>
        <para>
The example below demonstrates how to set a dictionary and configure its
properties in your configuration file. The <literal>DBDictionary</literal>
property uses OpenJPA's <link linkend="ref_guide_conf_plugins">plugin syntax
</link>.
        </para>
        <example id="ref_guide_dbsetup_dbdict">
            <title>
                Specifying a DBDictionary
            </title>
<programlisting>
&lt;property name="openjpa.jdbc.DBDictionary" value="hsql(SimulateLocking=true)"/&gt;
</programlisting>
        </example>
        <section id="ref_guide_dbsetup_dbdictprops">
            <title>
                DBDictionary Properties
            </title>
            <para>
The standard dictionaries all recognize the following properties. These
properties will usually not need to be overridden, since the dictionary
implementation should use the appropriate default values for your database. You
typically won't use these properties unless you are designing your own
<classname>DBDictionary</classname> for an unsupported database.
            </para>
            <itemizedlist>
            <!-- Please keep the list of dictionary properties
                 in alphabetical order -->
                <listitem id="DBDictionary.AllowsAliasInBulkClause">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            AllowsAliasInBulkClause
                        </secondary>
                    </indexterm>
<literal>AllowsAliasInBulkClause</literal>:
When true, SQL delete and update statements may use table aliases.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ArrayTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            ArrayTypeName
                        </secondary>
                    </indexterm>
<literal>ArrayTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.ARRAY</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.AutoAssignClause">
                    <para>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            automatic field values
                        </secondary>
                        <tertiary>
                            AutoAssignClause
                        </tertiary>
                    </indexterm>
<literal>AutoAssignClause</literal>: The column definition clause to append to
a creation statement. For example, <literal>"AUTO_INCREMENT"</literal> for
MySQL. This property is set automatically in the dictionary, and should not need
to be overridden, and is only used when the schema is generated using the
<literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.AutoAssignTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            AutoAssignTypeName
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            automatic field values
                        </secondary>
                        <tertiary>
                            AutoAssignTypeName
                        </tertiary>
                    </indexterm>
<literal>AutoAssignTypeName</literal>:
The column type name for auto-increment
columns. For example, <literal>"BIGSERIAL"</literal> for PostgreSQL. This
property is set automatically in the dictionary and should not need to be
overridden.  It is used only when the schema is generated using the
<literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BatchLimit">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            BatchLimit
                        </secondary>
                    </indexterm>
<literal>BatchLimit</literal>:
The default batch limit for sending multiple SQL statements at once to the
database.  A value of -1 indicates unlimited batching, and any positive integer
indicates the maximum number of SQL statements to batch together.
Defaults to 0 which disables batching.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BigintTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            BigintTypeName
                        </secondary>
                    </indexterm>
<literal>BigintTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.BIGINT</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BinaryTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            BinaryTypeName
                        </secondary>
                    </indexterm>
<literal>BinaryTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.BINARY</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BitTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            BitTypeName
                        </secondary>
                    </indexterm>
<literal>BitTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.BIT</literal>. This is used only when the schema is generated by
the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BlobBufferSize">
                    <para>
                    <indexterm>
                        <primary>
                            BLOB
                        </primary>
                        <secondary>
                            BlobBufferSize
                        </secondary>
                    </indexterm>
<literal>BlobBufferSize</literal>: This property establishes the buffer size in
the <literal>INSERT/UPDATE</literal> operations with an
<literal>java.io.InputStream</literal>. This is only used with OpenJPA's
<xref linkend="ref_guide_streamsupport"/>. Defaults to 50000.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BlobTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            BlobTypeName
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            BLOB
                        </primary>
                        <secondary>
                            BlobTypeName
                        </secondary>
                    </indexterm>
<literal>BlobTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.BLOB</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BooleanRepresentation">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            BooleanRepresentation
                        </secondary>
                    </indexterm>
<literal>BooleanRepresentation</literal>:
The overridden default representation for <literal>java.lang.Boolean</literal> or
<literal>boolean</literal> fields in JPA Entities. A
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/BooleanRepresentation.html">
<classname>org.apache.openjpa.jdbc.sql.BooleanRepresentation</classname></ulink>
describes how Boolean values in entities get mapped into the database by default.
Note that you additionally might need to define the <literal>BooleanTypeName</literal>
<literal>BitTypeName</literal> settings to fit your selected BooleanRepresenation.
                    </para>
                </listitem>
                <listitem id="DBDictionary.BooleanTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            BooleanTypeName
                        </secondary>
                    </indexterm>
<literal>BooleanTypeName</literal>:
The overridden default column type for
<literal>java.sql.Types.BOOLEAN</literal>. This is used only when the schema
is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CastFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            CastFunction
                        </secondary>
                    </indexterm>
<literal>CastFunction</literal>:
The SQL function call to cast a value to another SQL type.
Use the tokens <literal>{0}</literal> and <literal>{1}</literal> to represent
the two arguments.  The result of the function is convert the
<literal>{0}</literal> value to a <literal>{1}</literal> type.
The default is <literal>"CAST({0} AS {1})"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CatalogSeparator">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            CatalogSeparator
                        </secondary>
                    </indexterm>
<literal>CatalogSeparator</literal>: The string the database uses to delimit
between the schema name and the table name. This is typically <literal>"."
</literal>, which is the default.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CharTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            CharTypeName
                        </secondary>
                    </indexterm>
<literal>CharTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.CHAR</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CharacterColumnSize">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            CharacterColumnSize
                        </secondary>
                    </indexterm>
<literal>CharacterColumnSize</literal>: The default size of <literal>varchar
</literal> and <literal>char</literal> columns. Typically 255.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ClobBufferSize">
                    <para>
                    <indexterm>
                        <primary>
                            CLOB
                        </primary>
                        <secondary>
                            ClobBufferSize
                        </secondary>
                    </indexterm>
<literal>ClobBufferSize</literal>: This property establish the buffer size in
the <literal>INSERT/UPDATE</literal> operations with a
<literal>java.io.Reader</literal>. This is only used with OpenJPA's
<xref linkend="ref_guide_streamsupport"/>. Defaults to 50000.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ClobTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            ClobTypeName
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            CLOB
                        </primary>
                        <secondary>
                            ClobTypeName
                        </secondary>
                    </indexterm>
<literal>ClobTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.CLOB</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ClosePoolSQL">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            ClosePoolSQL
                        </secondary>
                    </indexterm>
<literal>ClosePoolSQL</literal>:
A special command to issue to the database when shutting down the pool.
Usually the pool of connections to the database is closed when the
application is ending.  For embedded databases, whose lifecycle is
coterminous with the application, there may be a special
command, usually <literal>"SHUTDOWN"</literal>,
that will cause the embedded database to close cleanly.
Defaults to <literal>null</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ConcatenateFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            ConcatenateFunction
                        </secondary>
                    </indexterm>
<literal>ConcatenateFunction</literal>:
The SQL function call or operation to concatenate two strings.
Use the tokens <literal>{0}</literal> and <literal>{1}</literal> to represent
the two arguments.  The result of the function or operation is to concatenate
the <literal>{1}</literal> string to the end of the <literal>{0}</literal>
string.  Defaults to <literal>"({0}||{1})"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ConstraintNameMode">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            ConstraintNameMode
                        </secondary>
                    </indexterm>
<literal>ConstraintNameMode</literal>: When creating constraints, whether to
put the constraint name before the definition (<literal>"before"</literal>),
just after the constraint type name (<literal>"mid"</literal>), or after the
constraint definition (<literal>"after"</literal>).
Defaults to <literal>"before"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CreatePrimaryKeys">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            CreatePrimaryKeys
                        </secondary>
                    </indexterm>
<literal>CreatePrimaryKeys</literal>: When false, do not
create database primary keys for identifiers. Defaults to <literal>true
</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CrossJoinClause">
                    <para>
                    <indexterm>
                        <primary>
                            joins
                        </primary>
                        <secondary>
                            CrossJoinClause
                        </secondary>
                    </indexterm>
<literal>CrossJoinClause</literal>: The clause to use for a cross join
(cartesian product). Defaults to <literal>"CROSS JOIN"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CurrentDateFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            CurrentDateFunction
                        </secondary>
                    </indexterm>
<literal>CurrentDateFunction</literal>:
The SQL function call to obtain the current date from the database.
Defaults to <literal>"CURRENT_DATE"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CurrentTimeFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            CurrentTimeFunction
                        </secondary>
                    </indexterm>
<literal>CurrentTimeFunction</literal>:
The SQL function call to obtain the current time from the database.
Defaults to <literal>"CURRENT_TIME"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.CurrentTimestampFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            CurrentTimestampFunction
                        </secondary>
                    </indexterm>
<literal>CurrentTimestampFunction</literal>:
The SQL function call to obtain the current timestamp from the database.
Defaults to <literal>"CURRENT_TIMESTAMP"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DateFractionDigits">
                    <para>
                        <indexterm>
                            <primary>
                                JDBC
                            </primary>
                            <secondary>
                                DateFractionDigits
                            </secondary>
                        </indexterm>
                        <literal>DateFractionDigits</literal>
                        Some databases support to store sub-second fraction values.
                        The digits to store can sometimes be configured.
                        This value defines the default number of digits to store in the database.
                        A <code>dateFractionDigits=3</code> will e.g. lead to a <code>DATETIME(3)</code> on some databases.

                        Note that this default can be overwritten to an integer value n per column via
                        <code>@Column(scale=n)</code>.
                        A <code>@Column(scale=-1)</code> will set the fraction digits to zero.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DatePrecision">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            DatePrecision
                        </secondary>
                    </indexterm>
<literal>DatePrecision</literal>:
The database is able to store time values to this degree of precision,
which is expressed in nanoseconds.
This value is usually one million, meaning that the database is able
to store time values with a precision of one millisecond.  Particular
databases may have more or less precision.
OpenJPA will round all time values to this degree of precision
before storing them in the database.  This property can be set to one
of the following precisions:
                </para>
                <itemizedlist>
                    <listitem>
                        <para>
<literal>DECI</literal>: 100000000
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>CENIT</literal>: 10000000
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>MILLI (default precision)</literal>: 1000000
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>MICRO</literal>: 1000
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>NANO (max precision)</literal>: 1
                        </para>
                    </listitem>
                </itemizedlist>
                </listitem>
                <listitem id="DBDictionary.DateMillisecondBehavior">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            DateMillisecondBehavior
                        </secondary>
                    </indexterm>
<literal>DateMillisecondBehavior</literal>:
When retrieving a <literal>Date</literal> value from a database which stores the value in
a TIMESTAMP column, the values retrieved will be rounded to the nearest
millisecond.  So a date of '2010-01-01 12:00:00.687701' stored in the
database will become '2010-01-01 12:00:00.688' in the <literal>Date</literal> field of the
entity.  The following date stored in the database as '9999-12-31 23:59:59.9999'
will become '10000-01-01 00:00:00.000'.  This rounding may not be desirable.  With this
property, a user has options which will direct OpenJPA how to handle the milliseconds.  This
property can be set to one of the enums defined in
<literal>DBDictionary.DateMillisecondBehaviors</literal>.  The options defined in
<literal>DBDictionary.DateMillisecondBehaviors</literal> are as follows:
                <itemizedlist>
                    <listitem>
                        <para>
<literal>DateMillisecondBehaviors.ROUND</literal>: This is the default.  The
<literal>Date</literal> will be rounded to the nearest millisecond, as described above.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>DateMillisecondBehaviors.DROP</literal>: The milliseconds will be dropped, thus
rounding is not performed.  As an example, a date of '2010-01-01 12:00:00.687701' stored in the
database will become '2010-01-01 12:00:00.000' in the <literal>Date</literal> field of the
entity.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>DateMillisecondBehaviors.RETAIN</literal>: The milliseconds will not be rounded, but will
be retained.  As an example, a date of '2010-01-01 12:00:00.687701' stored in the
database will become '2010-01-01 12:00:00.687' in the <literal>Date</literal> field of the
entity.
                        </para>
                    </listitem>
                </itemizedlist>
                    </para>
                </listitem>
                <listitem id="DBDictionary.DateTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            DateTypeName
                        </secondary>
                    </indexterm>
<literal>DateTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.DATE</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DecimalTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            DecimalTypeName
                        </secondary>
                    </indexterm>
<literal>DecimalTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.DECIMAL</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DelimitedCase">
                	<para>
                	<indexterm>
                		<primary>
                			delimited identifiers
                		</primary>
                		<secondary>
                			DelimitedCase
                		</secondary>
                	</indexterm>
<literal>DelimitedCase</literal>: The case to use when querying the database
about identifiers that have been delimited. It defaults to preserving the
case of the originally specified name. Available values are:
<literal>upper, lower, preserve.</literal>
                    </para>
                </listitem>
                <listitem id="DBDictionary.DisableAlterSeqenceIncrementBy">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            DisableAlterSeqenceIncrementBy
                        </secondary>
                    </indexterm>
<literal>DisableAlterSeqenceIncrementBy</literal>: OpenJPA attempts to execute
an ALTER SEQUENCE....INCREMENT BY SQL statement for a user defined sequence.  This
is done to ensure that the 'allocationSize' value defined by the entity's sequence,
or default value, matches the sequence defined in the database.  For example, with
an allocationSize of 1000 for a sequence named 'SEQ_JPASAMPLE', the following SQL
will be generated (the SQL might vary slightly depending on the databases):
<literal>ALTER SEQUENCE SEQ_JPASAMPLE INCREMENT BY 1000</literal>.  If the user
executing this command doesn't have permissions to execute the command, it will
fail and in turn OpenJPA will disable sequence caching.  If a user wants to disable
this SQL command, this property can be set to true.  However, the user must ensure
that the entities defined sequence is kept in synch with the sequence defined in the
database.  Defaults to false.
                	</para>
                </listitem>
                <listitem id="DBDictionary.DisableSchemaFactoryColumnTypeErrors">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            DisableSchemaFactoryColumnTypeErrors
                        </secondary>
                    </indexterm>
<literal>DisableSchemaFactoryColumnTypeErrors</literal>: When something other than the default
SchemaFactory is used, up-front mapping validation is performed against the database schema.  As
part of the validation, OpenJPA will verify a persistence class column's type against the column type
defined in the database schema.  If a mismatch is found, OpenJPA will throw an exception to flag the
mismatch types and will not allow processing to continue.  This can be limiting, especially if the
JDBC driver and/or database can properly handle the mismatch.  Set this property to true to disable
column type mismatch errors.  Defaults to false.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DistinctCountColumnSeparator">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            DistinctCountColumnSeparator
                        </secondary>
                    </indexterm>
<literal>DistinctCountColumnSeparator</literal>: The string the database uses
to delimit between column expressions in a <literal>SELECT COUNT(DISTINCT
column-list)</literal> clause. Defaults to <literal>null</literal>
for most databases, meaning that
multiple columns in a distinct COUNT clause are not supported.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DistinctTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            DistinctTypeName
                        </secondary>
                    </indexterm>
<literal>DistinctTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.DISTINCT</literal>. This is used only when the schema
is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DoubleTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            DoubleTypeName
                        </secondary>
                    </indexterm>
<literal>DoubleTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.DOUBLE</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DriverVendor">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            DriverVendor
                        </secondary>
                    </indexterm>
<literal>DriverVendor</literal>: The vendor of the particular JDBC driver you
are using. Some dictionaries must alter their behavior depending on the driver
vendor. Dictionaries usually detect the driver vendor and set this property
themselves.  See the <literal>VENDOR_XXX</literal> constants defined in the
<classname>DBDictionary</classname> Javadoc for available options.
                    </para>
                </listitem>
                <listitem id="DBDictionary.DropTableSQL">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            DropTableSQL
                        </secondary>
                    </indexterm>
<literal>DropTableSQL</literal>:
The SQL statement used to drop a table.  Use the token <literal>{0}</literal>
as the argument for the table name.
Defaults to <literal>"DROP TABLE {0}"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.FixedSizeTypeNames">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            FixedSizeTypeNames
                        </secondary>
                    </indexterm>
<literal>FixedSizeTypeNames</literal>:
A comma separated list of additional database types that have a size
defined by the database.  In other words, when a column of a fixed
size type is declared, its size cannot be defined by the user.  Common
examples would be <literal>DATE</literal>, <literal>FLOAT</literal>,
and <literal>INTEGER</literal>.
Each database dictionary has its own internal set of fixed size type names
that include the names mentioned here and many others.
Names added to this property are added to the dictionary's internal set.
Defaults to <literal>null</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.FloatTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            FloatTypeName
                        </secondary>
                    </indexterm>
<literal>FloatTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.FLOAT</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ForUpdateClause">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            ForUpdateClause
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            ForUpdateClause
                        </secondary>
                    </indexterm>
<literal>ForUpdateClause</literal>: The clause to append to <literal>SELECT
</literal> statements to issue queries that obtain pessimistic locks. Defaults
to <literal>"FOR UPDATE"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.GetStringVal">
                    <para>
                    <indexterm>
                        <primary>
                            Oracle
                        </primary>
                        <secondary>
                            GetStringVal
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            GetStringVal
                        </secondary>
                    </indexterm>
<literal>GetStringVal</literal>:
A special function to return the value of an XML
column in a select statement.  For example, Oracle uses
<literal>".getClobVal()"</literal>, as in
<literal>"SELECT t0.xmlcol.getClobVal() FROM xmltab t0"</literal>.
Defaults to the empty string.
                    </para>
                </listitem>
                <listitem id="DBDictionary.InClauseLimit">
                    <para>
                    <indexterm>
                        <primary>
                            Oracle
                        </primary>
                        <secondary>
                            InClauseLimit
                        </secondary>
                    </indexterm>
<literal>InClauseLimit</literal>:
The maximum number of elements in an <literal>IN</literal> clause.  OpenJPA
works around cases where the limit is exceeded.  Defaults to -1 meaning
no limit.
                    </para>
                </listitem>
                <listitem id="DBDictionary.InitializationSQL">
                    <para>
                    <indexterm>
                        <primary>
                            connections
                        </primary>
                        <secondary>
                            InitializationSQL
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            InitializationSQL
                        </secondary>
                    </indexterm>
<literal>InitializationSQL</literal>: A piece of SQL to issue against the
database whenever a connection is retrieved from the <classname>DataSource
</classname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.InnerJoinClause">
                    <para>
                    <indexterm>
                        <primary>
                            joins
                        </primary>
                        <secondary>
                            InnerJoinClause
                        </secondary>
                    </indexterm>
<literal>InnerJoinClause</literal>: The clause to use for an inner join.
Defaults to <literal>"INNER JOIN"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.IntegerTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            IntegerTypeName
                        </secondary>
                    </indexterm>
<literal>IntegerTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.INTEGER</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.JavaObjectTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            JavaObjectTypeName
                        </secondary>
                    </indexterm>
<literal>JavaObjectTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.JAVAOBJECT</literal>. This is used only when the schema
is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.JoinSyntax">
                    <para>
                    <indexterm>
                        <primary>
                            joins
                        </primary>
                        <secondary>
                            JoinSyntax
                        </secondary>
                    </indexterm>
<literal>JoinSyntax</literal>: The SQL join syntax to use in select statements.
See <xref linkend="ref_guide_dbsetup_sql92"/>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.LastGeneratedKeyQuery">
                    <para>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            automatic field values
                        </secondary>
                        <tertiary>
                            LastGeneratedKeyQuery
                        </tertiary>
                    </indexterm>
<literal>LastGeneratedKeyQuery</literal>: The query to issue to obtain the last
automatically generated key for an auto-increment column. For example,
<literal>"SELECT LAST_INSERT_ID()"</literal> for MySQL. This property is set
automatically in the dictionary, and should not need to be overridden.
If <literal>SupportsGetGeneratedKeys</literal> is true, the query will not
be issued but a more efficient JDBC 3.0 mechanism for obtaining generated
keys will be used instead.
                    </para>
                </listitem>
                <listitem id="DBDicationary.LeadingDelimiter">
                	<para>
                	<indexterm>
                		<primary>
                			delimited identifiers
                		</primary>
                		<secondary>
                			LeadingDelimiter
                		</secondary>
                	</indexterm>
<literal>LeadingDelimiter</literal>: The characters to use as the leading delimiter
for a delimited identifier. The default value is a double quote,
<literal>(")</literal>. See
<xref linkend="ref_guide_dbsetup_dbsupport_delim_id"/> for
the default value for some specific databases.
                	</para>
                </listitem>
                <listitem id="DBDictionary.LongVarbinaryTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            LongVarbinaryTypeName
                        </secondary>
                    </indexterm>
<literal>LongVarbinaryTypeName</literal>: The overridden default column type
for <literal>java.sql.Types.LONGVARBINARY</literal>. This is used only when the
schema is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.LongVarcharTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            LongVarcharTypeName
                        </secondary>
                    </indexterm>
<literal>LongVarcharTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.LONGVARCHAR</literal>. This is used only when the
schema is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxAutoAssignNameLength">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            MaxAutoAssignNameLength
                        </secondary>
                    </indexterm>
<literal>MaxAutoAssignNameLength</literal>: Set this property to the maximum
length of the sequence name used for auto-increment columns. Names longer than
this value are truncated. Defaults to 31.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxColumnNameLength">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            MaxColumnNameLength
                        </secondary>
                    </indexterm>
<literal>MaxColumnNameLength</literal>: The maximum number of characters in a
column name. Defaults to 128.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxConstraintNameLength">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            MaxConstraintNameLength
                        </secondary>
                    </indexterm>
<literal>MaxConstraintNameLength</literal>: The maximum number of characters in
a constraint name. Defaults to 128.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxEmbeddedBlobSize">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            MaxEmbeddedBlobSize
                        </secondary>
                    </indexterm>
<literal>MaxEmbeddedBlobSize</literal>:
When greater than -1, the maximum size of a <literal>BLOB</literal> value
that can be sent directly to the database within an insert or update statement.
Values whose size is greater than <literal>MaxEmbeddedBlobSize</literal> force
OpenJPA to work around this limitation.  A value of -1 means that there is
no limitation. Defaults to -1.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxEmbeddedClobSize">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            MaxEmbeddedClobSize
                        </secondary>
                    </indexterm>
<literal>MaxEmbeddedClobSize</literal>:
When greater than -1, the maximum size of a <literal>CLOB</literal> value
that can be sent directly to the database within an insert or update statement.
Values whose size is greater than <literal>MaxEmbeddedClobSize</literal> force
OpenJPA to work around this limitation.  A value of -1 means that there is
no limitation. Defaults to -1.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxIndexNameLength">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            MaxIndexNameLength
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            indexes
                        </primary>
                        <secondary>
                            MaxIndexNameLength
                        </secondary>
                    </indexterm>
<literal>MaxIndexNameLength</literal>: The maximum number of characters in an
index name. Defaults to 128.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxIndexesPerTable">
                    <para>
                    <indexterm>
                        <primary>
                            indexes
                        </primary>
                        <secondary>
                            MaxIndexesPerTable
                        </secondary>
                    </indexterm>
<literal>MaxIndexesPerTable</literal>: The maximum number of indexes that can
be placed on a single table. Defaults to no limit.
                    </para>
                </listitem>
                <listitem id="DBDictionary.MaxTableNameLength">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            MaxTableNameLength
                        </secondary>
                    </indexterm>
<literal>MaxTableNameLength</literal>: The maximum number of characters in a
table name. Defaults to 128.
                    </para>
                </listitem>
                <listitem id="DBDictionary.NameConcatenator">
                	<para>
                	<indexterm>
                		<primary>
                			DBDictionary
                		</primary>
                		<secondary>
                			NameConcatenator
                		</secondary>
                	</indexterm>
<literal>NameConcatenator</literal>: The value used when names are concatenated to
create a generated name. The default value is the underscore <literal>"_"</literal>.
                	</para>
                </listitem>
                <listitem id="DBDictionary.NextSequenceQuery">
                    <para>
                    <indexterm>
                        <primary>
                            Sequence
                        </primary>
                        <secondary>
                            NextSequenceQuery
                        </secondary>
                    </indexterm>
<literal>NextSequenceQuery</literal>: A SQL string for obtaining a native
sequence value. May use a placeholder of <literal>{0}</literal> for the variable
sequence name and <literal>{1}</literal> for sequence increment.
Defaults to a database-appropriate value. For example,
<literal>"SELECT {0}.NEXTVAL FROM DUAL"</literal> for Oracle database.
                    </para>
                </listitem>
                <listitem id="DBDictionary.NullTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            NullTypeName
                        </secondary>
                    </indexterm>
<literal>NullTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.NULL</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.NumericTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            NumericTypeName
                        </secondary>
                    </indexterm>
<literal>NumericTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.NUMERIC</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.OtherTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            OtherTypeName
                        </secondary>
                    </indexterm>
<literal>OtherTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.OTHER</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.OuterJoinClause">
                    <para>
                    <indexterm>
                        <primary>
                            joins
                        </primary>
                        <secondary>
                            OuterJoinClause
                        </secondary>
                    </indexterm>
<literal>OuterJoinClause</literal>: The clause to use for an left outer join.
Defaults to <literal>"LEFT OUTER JOIN"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.Platform">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            Platform
                        </secondary>
                    </indexterm>
<literal>Platform</literal>:
The name of the database that this dictionary targets.
Defaults to <literal>"Generic"</literal>, but all dictionaries override this
value.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RangePosition">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            RangePosition
                        </secondary>
                    </indexterm>
<literal>RangePosition</literal>:
Indicates where to specify in the SQL select statement the range, if any,
of the result rows to be returned.
When limiting the number of returned result rows to a subset of all those
that satisfy the query's conditions, the position of the range clause
varies by database.
Defaults to 0, meaning that the range
is expressed at the end of the select statement but before any locking clause.
See the RANGE_XXX constants defined in <classname>DBDictionary</classname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RealTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            RealTypeName
                        </secondary>
                    </indexterm>
<literal>RealTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.REAL</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RefTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            RefTypeName
                        </secondary>
                    </indexterm>
<literal>RefTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.REF</literal>. This is used only when the schema is generated by
the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresAliasForSubselect">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            RequiresAliasForSubselect
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            JPQL
                        </primary>
                        <secondary>
                            subselects
                        </secondary>
                        <tertiary>
                            RequiresAliasForSubselect
                        </tertiary>
                    </indexterm>
<literal>RequiresAliasForSubselect</literal>: When true, the database
requires that subselects in a FROM clause be assigned an alias.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresAutoCommitForMetadata">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            RequiresAutoCommitForMetaData
                        </tertiary>
                    </indexterm>
<literal>RequiresAutoCommitForMetadata</literal>: When true, the JDBC driver
requires that autocommit be enabled before any schema interrogation operations
can take place.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresCastForComparisons">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            RequiresCastForComparisons
                        </secondary>
                    </indexterm>
<literal>RequiresCastForComparisons</literal>:
When true, comparisons of two values of different types or
of two literals requires a cast in the generated SQL.
Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresCastForMathFunctions">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            RequiresCastForMathFunctions
                        </secondary>
                    </indexterm>
<literal>RequiresCastForMathFunctions</literal>:
When true, math operations on two values of different types or
on two literals requires a cast in the generated SQL.
Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresConditionForCrossJoin">
                    <para>
                    <indexterm>
                        <primary>
                            joins
                        </primary>
                        <secondary>
                            RequiresConditionForCrossJoin
                        </secondary>
                    </indexterm>
<literal>RequiresConditionForCrossJoin</literal>: Some databases require that
there always be a conditional statement for a cross join. If set, this parameter
ensures that there will always be some condition to the join clause.
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresTargetForDelete">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            RequiresTargetForDelete
                        </secondary>
                    </indexterm>
<literal>RequiresTargetForDelete</literal>:
When true, the database requires a target for delete statements.  Defaults
to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ReservedWords">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            ReservedWords
                        </secondary>
                    </indexterm>
<literal>ReservedWords</literal>: A comma-separated list of reserved words for
this database, beyond the standard SQL92 keywords.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SchemaCase">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SchemaCase
                        </tertiary>
                    </indexterm>
<literal>SchemaCase</literal>: The case to use when querying the database
metadata about schema components. Defaults to making all names upper case.
Available values are: <literal>upper, lower, preserve</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SearchStringEscape">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SearchStringEscape
                        </secondary>
                    </indexterm>
<literal>SearchStringEscape</literal>:
The default escape character used when generating SQL <literal>LIKE</literal>
clauses.  The escape character is used to escape the wildcard meaning of the
<literal>_</literal> and <literal>%</literal> characters.
Note: since JPQL provides the ability to define the escape character in
the query, this setting is primarily used when translating other query
languages, such as JDOQL.  Defaults to <literal>"\\"</literal>
(a single backslash in Java speak).
                    </para>
                </listitem>
                <listitem id="DBDictionary.RequiresSearchStringEscapeForLike">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            RequiresSearchStringEscapeForLike
                        </secondary>
                    </indexterm>
<literal>RequiresSearchStringEscapeForLike</literal>:
When true, the database requires an escape string for queries that use
<literal>LIKE</literal>.  The escape string can be specified using
<literal>searchStringEscape</literal>.  Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SelectWords">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SelectWords
                        </secondary>
                    </indexterm>
<literal>SelectWords</literal>: A comma-separated list of keywords which may be
used to start a SELECT statement for this database. If an application executes
a native SQL statement which begins with SelectWords OpenJPA will treat the
statement as a SELECT statement rather than an UPDATE statement.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SequenceNameSQL">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SequenceNameSQL
                        </tertiary>
                    </indexterm>
<literal>SequenceNameSQL</literal>:
Additional phrasing to use with <literal>SequenceSQL</literal>.
Defaults to <literal>null</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SequenceSQL">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SequenceSQL
                        </tertiary>
                    </indexterm>
<literal>SequenceSQL</literal>:
General structure of the SQL query to use when interrogating the database
for sequence names.
As there is no standard way to obtain sequence names,
it defaults to <literal>null</literal>.
                    </para>
                </listitem>

                <listitem id="DBDictionary.SequenceSchemaSQL">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SequenceSchemaSQL
                        </tertiary>
                    </indexterm>
<literal>SequenceSchemaSQL</literal>:
Additional phrasing to use with <literal>SequenceSQL</literal>.
Defaults to <literal>null</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SimulateLocking">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SimulateLocking
                        </secondary>
                    </indexterm>
<literal>SimulateLocking</literal>: Some databases do not support pessimistic
locking, which will result in an exception when you attempt a
transaction while using the pessimistic lock manager.
Setting this property to <literal>true</literal> suppresses the
locking of rows in the database, thereby allowing pessimistic transactions
even on databases that do not support locking. At the same time, setting this
property to <literal>true</literal> means that you do not obtain the semantics
of a pessimistic
transaction with the database. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SmallintTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            SmallintTypeName
                        </secondary>
                    </indexterm>
<literal>SmallintTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.SMALLINT</literal>. This is used only when the schema
is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.StorageLimitationsFatal">
                    <para>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            StorageLimitationsFatal
                        </secondary>
                    </indexterm>
<literal>StorageLimitationsFatal</literal>: When true, any data
truncation/rounding that is performed by the dictionary in order to store a
value in the database will be treated as a fatal error, rather than just issuing
a warning.
                    </para>
                </listitem>
                <listitem id="DBDictionary.StoreCharsAsNumbers">
                    <para>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            StoreCharsAsNumbers
                        </secondary>
                    </indexterm>
<literal>StoreCharsAsNumbers</literal>: Set this property to <literal>false
</literal> to store Java <literal>char</literal> fields as <literal>CHAR
</literal> values rather than numbers. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.StoreLargeNumbersAsStrings">
                    <para>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            StoreLargeNumbersAsStrings
                        </secondary>
                    </indexterm>
<literal>StoreLargeNumbersAsStrings</literal>: When true, the dictionary
prefers to store Java fields of
type <classname>BigInteger</classname> and <classname>BigDecimal</classname>
as string values in the database.  Likewise, the dictionary will instruct
the mapping tool to map these Java types to character columns.
Because some databases have limitations on the number of digits that can
be stored in a numeric column (for example, Oracle can only store 38
digits), this option may be necessary for some applications.
Note that this option may prevent OpenJPA from executing meaningful numeric
queries against the columns. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.StringLengthFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            StringLengthFunction
                        </secondary>
                    </indexterm>
<literal>StringLengthFunction</literal>: Name of the SQL function for getting
the length of a string. Use the token <literal>{0}</literal> to represent the
argument.
                    </para>
                </listitem>
                <listitem id="DBDictionary.StructTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            StructTypeName
                        </secondary>
                    </indexterm>
<literal>StructTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.STRUCT</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SubstringFunctionName">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SubstringFunctionName
                        </secondary>
                    </indexterm>
<literal>SubstringFunctionName</literal>: Name of the SQL function for getting
the substring of a string.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsAlterTableWithAddColumn">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            SupportsAlterTableWithAddColumn
                        </secondary>
                    </indexterm>
<literal>SupportsAlterTableWithAddColumn</literal>: When true, the database
supports adding a new column in an ALTER TABLE statement.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsAlterTableWithDropColumn">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            SupportsAlterTableWithDropColumn
                        </secondary>
                    </indexterm>
<literal>SupportsAlterTableWithDropColumn</literal>: When true, the database
supports dropping a column in an ALTER TABLE statement.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsAutoAssign">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SupportsAutoAssign
                        </secondary>
                    </indexterm>
<literal>SupportsAutoAssign</literal>:
When true, the database supports auto-assign columns, where the value of
column is assigned upon insertion of the row into the database.
Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsCascadeDeleteAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsCascadeDeleteAction
                        </secondary>
                    </indexterm>
<literal>SupportsCascadeDeleteAction</literal>: When true, the database supports
the <literal>CASCADE</literal> delete action on foreign keys.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsCascadeUpdateAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsCascadeUpdateAction
                        </secondary>
                    </indexterm>
<literal>SupportsCascadeUpdateAction</literal>:
When true, the database supports the <literal>CASCADE</literal>
update action on foreign keys.  Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsComments">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            SupportsComments
                        </secondary>
                    </indexterm>
<literal>SupportsComments</literal>:
When true, comments can be associated with the table in the table creation
statement.  Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsCorrelatedSubselect">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SupportsCorrelatedSubselect
                        </secondary>
                    </indexterm>
<literal>SupportsCorrelatedSubselect</literal>:
When true, the database supports correlated subselects.  Correlated
subselects are select statements nested within select statements that
refers to a column in the outer select statement.  For performance
reasons, correlated subselects are generally a last resort.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsDefaultDeleteAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsDefaultDeleteAction
                        </secondary>
                    </indexterm>
<literal>SupportsDefaultDeleteAction</literal>: When true, the database supports
the <literal>SET DEFAULT</literal> delete action on foreign keys.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsDefaultUpdateAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsDefaultUpdateAction
                        </secondary>
                    </indexterm>
<literal>SupportsDefaultUpdateAction</literal>:
When true, the database supports the <literal>SET DEFAULT</literal> update
action on foreign keys.  Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsDeferredConstraints">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsDeferredConstraints
                        </secondary>
                    </indexterm>
<literal>SupportsDeferredConstraints</literal>: When true, the database
supports deferred constraints.  The
database supports deferred constraints by checking for constraint
violations when the transaction commits, rather than checking for
violations immediately after receiving each SQL statement within the
transaction. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsDelimitedIdentifiers">
					<para>
					<indexterm>
						<primary>
							delimited identifiers
						</primary>
						<secondary>
							SupportsDelimitedIdentifiers
						</secondary>
					</indexterm>
<literal>SupportsDelimitedIdentifiers</literal>: When true, the database
supports delimited identifiers. It defaults to <literal>true</literal>.
                	</para>
                </listitem>
                <listitem id="DBDictionary.SupportsForeignKeys">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsForeignKeys
                        </secondary>
                    </indexterm>
<literal>SupportsForeignKeys</literal>: When true, the database supports foreign
keys. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsForeignKeysComposite">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsForeignKeysComposite
                        </secondary>
                    </indexterm>
<literal>SupportsForeignKeysComposite</literal>: When true, the database supports
composite foreign keys. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsGetGeneratedKeys">
                    <para>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            automatic field values
                        </secondary>
                        <tertiary>
                            SupportsGetGeneratedKeys
                        </tertiary>
                    </indexterm>
<literal>SupportsGetGeneratedKeys</literal>: When true, OpenJPA will use
<methodname>java.sql.Statement.getGeneratedKeys</methodname> method to obtain
values of auto-increment columns. When false, a query specified by
<literal>LastGeneratedKeyQuery</literal> will be used for that purpose.
If not set, the value will be auto-detected by querying the JDBC driver.
Setting the value to true requires that the JDBC
driver supports version 3.0 or higher of the JDBC specification
and supports the <methodname>java.sql.Statement.getGeneratedKeys</methodname>
method.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsHaving">
                    <para>
                    <indexterm>
                        <primary>
                            aggregates
                        </primary>
                        <secondary>
                            having
                        </secondary>
                        <tertiary>
                            SupportsHaving
                        </tertiary>
                    </indexterm>
<literal>SupportsHaving</literal>: When true, the database supports HAVING
clauses in selects.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsLockingWithDistinctClause">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsLockingWithDistinctClause
                        </secondary>
                    </indexterm>
<literal>SupportsLockingWithDistinctClause</literal>: When true, the
database supports <literal>FOR UPDATE</literal> select clauses with
<literal>DISTINCT</literal> clauses.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsLockingWithInnerJoin">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsLockingWithInnerJoin
                        </secondary>
                    </indexterm>
<literal>SupportsLockingWithInnerJoin</literal>: When true, the database
supports <literal>FOR UPDATE</literal> select clauses with inner join queries.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsLockingWithMultipleTables">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsLockingWithMultipleTables
                        </secondary>
                    </indexterm>
<literal>SupportsLockingWithMultipleTables</literal>: When true, the
database supports <literal>FOR UPDATE</literal> select clauses that select from
multiple tables.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsLockingWithOrderClause">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsLockingWithOrderClause
                        </secondary>
                    </indexterm>
<literal>SupportsLockingWithOrderClause</literal>: When true, the database
supports <literal>FOR UPDATE</literal> select clauses with <literal>ORDER BY
</literal> clauses.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsLockingWithOuterJoin">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsLockingWithOuterJoin
                        </secondary>
                    </indexterm>
<literal>SupportsLockingWithOuterJoin</literal>: When true, the database
supports <literal>FOR UPDATE</literal> select clauses with outer join queries.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsLockingWithSelectRange">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsLockingWithSelectRange
                        </secondary>
                    </indexterm>
<literal>SupportsLockingWithSelectRange</literal>: When true, the database
supports <literal>FOR UPDATE</literal> select clauses with queries that select a
range of data using <literal>LIMIT</literal>, <literal>TOP</literal> or the
database equivalent. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsModOperator">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SupportsModOperator
                        </secondary>
                    </indexterm>
<literal>SupportsModOperator</literal>:
When true, the database supports the modulus operator (<literal>%</literal>)
instead of the <literal>MOD</literal> function.
Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsMultipleNontransactionalResultSets">
                    <para>
<literal>SupportsMultipleNontransactionalResultSets</literal>: When true, a
nontransactional connection is capable of having multiple open
<classname>ResultSet</classname> instances.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsNullDeleteAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsNullDeleteAction
                        </secondary>
                    </indexterm>
<literal>SupportsNullDeleteAction</literal>: When true, the database supports
the <literal>SET NULL</literal> delete action on foreign keys.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsNullTableForGetColumns">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SupportsNullTableForGetColumns
                        </tertiary>
                    </indexterm>
<literal>SupportsNullTableForGetColumns</literal>: When true, the database
supports passing a <literal>null</literal> parameter to <methodname>
DatabaseMetaData.getColumns</methodname> as an optimization to get information
about all the tables. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsNullTableForGetImportedKeys">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SupportsNullTableForGetImportedKeys
                        </tertiary>
                    </indexterm>
<literal>SupportsNullTableForGetImportedKeys</literal>: When true, the
database supports passing a <literal>null</literal> parameter to <methodname>
DatabaseMetaData.getImportedKeys</methodname> as an optimization to get
information about all the tables. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsNullTableForGetIndexInfo">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SupportsNullTableForGetIndexInfo
                        </tertiary>
                    </indexterm>
<literal>SupportsNullTableForGetIndexInfo</literal>: When true, the database
supports passing a <literal>null</literal> parameter to <methodname>
DatabaseMetaData.getIndexInfo</methodname> as an optimization to get information
about all the tables. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsNullTableForGetPrimaryKeys">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SupportsNullTableForGetPrimaryKeys
                        </tertiary>
                    </indexterm>
<literal>SupportsNullTableForGetPrimaryKeys</literal>: When true, the
database supports passing a <literal>null</literal> parameter to <methodname>
DatabaseMetaData.getPrimaryKeys</methodname> as an optimization to get
information about all the tables. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsNullUpdateAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsNullUpdateAction
                        </secondary>
                    </indexterm>
<literal>SupportsNullUpdateAction</literal>:
When true, the database supports the <literal>SET NULL</literal> update
action on foreign keys.  Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsQueryTimeout">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            QueryTimeout
                        </secondary>
                        <tertiary>
                            SupportsQueryTimeout
                        </tertiary>
                    </indexterm>
<literal>SupportsQueryTimeout</literal>: When true, the JDBC driver supports
calls to <methodname> java.sql.Statement.setQueryTimeout</methodname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.AllowQueryTimeoutOnFindUpdate">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            QueryTimeout
                        </secondary>
                        <tertiary>
                            AllowQueryTimeoutOnFindUpdate
                        </tertiary>
                    </indexterm>
<literal>AllowQueryTimeoutOnFindUpdate</literal>: The JPA Specification defines the
javax.persistence.query.timeout, in milliseconds, as a hint to the provider.  The hint
is used for Query operations.  This property, when set to true, will allow the query timeout hint
to apply to EntityManager operations.  For example, when a 'find' is executed and the resultant
entity updated, the query timeout will apply to the SQL update operation.  This property defaults
to false.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsRestrictDeleteAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsRestrictDeleteAction
                        </secondary>
                    </indexterm>
<literal>SupportsRestrictDeleteAction</literal>: When true, the database
supports the <literal>RESTRICT</literal> delete action on foreign keys.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsRestrictUpdateAction">
                    <para>
                    <indexterm>
                        <primary>
                            foreign keys
                        </primary>
                        <secondary>
                            SupportsRestrictUpdateAction
                        </secondary>
                    </indexterm>
<literal>SupportsRestrictUpdateAction</literal>:
When true, the database supports the <literal>RESTRICT</literal> update
action on foreign keys.  Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSchemaForGetColumns">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SupportsSchemaForGetColumns
                        </tertiary>
                    </indexterm>
<literal>SupportsSchemaForGetColumns</literal>: When false, the database
driver does not support using the schema name for schema reflection on column
names.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSchemaForGetTables">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SupportsSchemaForGetTables
                        </tertiary>
                    </indexterm>
<literal>SupportsSchemaForGetTables</literal>: If false, then the database
driver does not support using the schema name for schema reflection on table
names.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSelectEndIndex">
                    <para>
                    <indexterm>
                        <primary>
                            Query
                        </primary>
                        <secondary>
                            result range
                        </secondary>
                        <tertiary>
                            SupportsSelectEndIndex
                        </tertiary>
                    </indexterm>
<literal>SupportsSelectEndIndex</literal>: When true, the database can create a
select that is limited to the first N results.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSelectForUpdate">
                    <para>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            SupportsSelectForUpdate
                        </secondary>
                    </indexterm>
<literal>SupportsSelectForUpdate</literal>: When true, the database supports
<literal>SELECT</literal> statements with a pessimistic locking
(<literal>FOR UPDATE</literal>) clause. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSelectStartIndex">
                    <para>
                    <indexterm>
                        <primary>
                            Query
                        </primary>
                        <secondary>
                            result range
                        </secondary>
                        <tertiary>
                            SupportsSelectStartIndex
                        </tertiary>
                    </indexterm>
<literal>SupportsSelectStartIndex</literal>: When true, the database can create a
select that skips the first N results.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSimpleCaseExpression">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SupportsSimpleCaseExpression
                        </secondary>
                    </indexterm>
<literal>SupportsSimpleCaseExpression</literal>: When true, the database supports
the simple form of <literal>CASE</literal> expression:
<literal>CASE &lt;a&gt; WHEN &lt;b&gt; THEN &lt;c&gt; WHEN &lt;d&gt; THEN &lt;e&gt; ELSE &lt;f&gt; END</literal>.
When false, the general form of <literal>CASE</literal> expression will be used:
<literal>CASE WHEN &lt;a&gt; = &lt;b&gt; THEN &lt;c&gt; WHEN &lt;a&gt; = &lt;d&gt; THEN &lt;e&gt; ELSE &lt;f&gt; END</literal>.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsSubselect">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            SupportsSubselect
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            JPQL
                        </primary>
                        <secondary>
                            subselects
                        </secondary>
                        <tertiary>
                            SupportsSubselect
                        </tertiary>
                    </indexterm>
<literal>SupportsSubselect</literal>: When true, the database supports subselects
in queries.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsTimestampNanos">
                    <para>
                    <indexterm>
                        <primary>
                            SupportsTimestampNanos
                        </primary>
                    </indexterm>
<literal>SupportsTimestampNanos</literal>: When true, the database supports
nanoseconds with TIMESTAMP columns.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsUniqueConstraints">
                    <para>
                    <indexterm>
                        <primary>
                            unique constraints
                        </primary>
                        <secondary>
                            SupportsUniqueConstraints
                        </secondary>
                    </indexterm>
<literal>SupportsUniqueConstraints</literal>: When true, the database supports
unique constraints. Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SupportsXMLColumn">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            SupportsXMLColumn
                        </secondary>
                    </indexterm>
<literal>SupportsXMLColumn</literal>:
When true, the database supports an XML column type.  See
<xref linkend="ref_guide_xmlmapping"/>
for information on using this capability.  Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SystemSchemas">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SystemSchemas
                        </tertiary>
                    </indexterm>
<literal>SystemSchemas</literal>: A comma-separated list of schema names that
should be ignored.
                    </para>
                </listitem>
                <listitem id="DBDictionary.SystemTables">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            SystemTables
                        </tertiary>
                    </indexterm>
<literal>SystemTables</literal>: A comma-separated list of table names that
should be ignored.
                    </para>
                </listitem>

                    <listitem id="DBDictionary.TableForUpdateClause">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            TableForUpdateClause
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            locking
                        </primary>
                        <secondary>
                            TableForUpdateClause
                        </secondary>
                    </indexterm>
<literal>TableForUpdateClause</literal>: The clause to append to the end of
each table alias in queries that obtain pessimistic locks.
Defaults to <literal>null</literal>.
                    </para>
                </listitem>

                <listitem id="DBDictionary.tableLengthIncludesSchema">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                           tableLengthIncludesSchema
                        </secondary>
                    </indexterm>
                    <literal>tableLengthIncludesSchema</literal>: Whether the max length for a table name includes the table's schema.
                    Defaults to <literal>false</literal>.
                </para>
                </listitem>

                <listitem id="DBDictionary.TableTypes">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            TableTypes
                        </tertiary>
                    </indexterm>
<literal>TableTypes</literal>: Comma-separated list of table types to use when
looking for tables during schema reflection, as defined in the <methodname>
java.sql.DatabaseMetaData.getTableInfo</methodname> JDBC method. An example is:
<literal>"TABLE,VIEW,ALIAS"</literal>. Defaults to <literal>"TABLE"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.TimeTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            TimeTypeName
                        </secondary>
                    </indexterm>
<literal>TimeTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.TIME</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.TimestampTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            TimestampTypeName
                        </secondary>
                    </indexterm>
<literal>TimestampTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.TIMESTAMP</literal>. This is used only when the schema
is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.TinyintTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            TinyintTypeName
                        </secondary>
                    </indexterm>
<literal>TinyintTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.TINYINT</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ToLowerCaseFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            ToLowerCaseFunction
                        </secondary>
                    </indexterm>
<literal>ToLowerCaseFunction</literal>: Name of the SQL function for converting
a string to lower case. Use the token <literal>{0}</literal> to represent the
argument.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ToUpperCaseFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            ToUpperCaseFunction
                        </secondary>
                    </indexterm>
<literal>ToUpperCaseFunction</literal>: SQL function call for converting a
string to upper case. Use the token <literal>{0}</literal> to represent the
argument.
                    </para>
                </listitem>
                <listitem id="DBDicationary.TrailingDelimiter">
                	<para>
                	<indexterm>
                		<primary>
                			delimited identifiers
                		</primary>
                		<secondary>
                			TrailingDelimiter
                		</secondary>
                	</indexterm>
<literal>TrailingDelimiter</literal>: The characters to use as the trailing delimiter
for a delimited identifier. The default value is a double quote,
<literal>(")</literal>. See
<xref linkend="ref_guide_dbsetup_dbsupport_delim_id"/> for
the default value for some specific databases.
                	</para>
                </listitem>
                <listitem id="DBDictionary.TrimBothFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            TrimBothFunction
                        </secondary>
                    </indexterm>
<literal>TrimBothFunction</literal>:
The SQL function call to trim any number of a particular character
from both the start and end of a string.
Note: some databases do not support specifying the character in which
case only spaces or whitespace can be trimmed.
Use the token <literal>{1}</literal> when possible to represent the character,
and the token <literal>{0}</literal> to represent the string.
Defaults to <literal>"TRIM(BOTH {1} FROM {0})"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.TrimLeadingFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            TrimLeadingFunction
                        </secondary>
                    </indexterm>
<literal>TrimLeadingFunction</literal>:
The SQL function call to trim any number of a particular character
from the start of a string.
Note: some databases do not support specifying the character in which
case only spaces or whitespace can be trimmed.
Use the token <literal>{1}</literal> when possible to represent the character,
and the token <literal>{0}</literal> to represent the string.
Defaults to <literal>"TRIM(LEADING {1} FROM {0})"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.TrimStringColumns">
                    <para>
                    <indexterm>
                        <primary>
                            String
                        </primary>
                        <secondary>
                            TrimStringColumns
                        </secondary>
                    </indexterm>
<literal>TrimStringColumns</literal>: When <literal>true</literal>, the resulting String from
<methodname>ResultSet.getString</methodname> will be trimmed of trailing white space.  Defaults
to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.TrimTrailingFunction">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            TrimTrailingFunction
                        </secondary>
                    </indexterm>
<literal>TrimTrailingFunction</literal>:
The SQL function call to trim any number of a particular character
from the end of a string.
Note: some databases do not support specifying the character in which
case only spaces or whitespace can be trimmed.
Use the token <literal>{1}</literal> when possible to represent the character,
and the token <literal>{0}</literal> to represent the string.
Defaults to <literal>"TRIM(TRAILING {1} FROM {0})"</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseGetBestRowIdentifierForPrimaryKeys">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            reflection
                        </secondary>
                        <tertiary>
                            UseGetBestRowIdentifierForPrimaryKeys
                        </tertiary>
                    </indexterm>
<literal>UseGetBestRowIdentifierForPrimaryKeys</literal>: When true,
metadata queries will use <methodname>DatabaseMetaData.getBestRowIdentifier
</methodname> to obtain information about primary keys, rather than <methodname>
DatabaseMetaData.getPrimaryKeys</methodname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseGetBytesForBlobs">
                    <para>
                    <indexterm>
                        <primary>
                            BLOB
                        </primary>
                        <secondary>
                            UseGetBytesForBlobs
                        </secondary>
                    </indexterm>
<literal>UseGetBytesForBlobs</literal>: When true, <methodname>
ResultSet.getBytes</methodname> will be used to obtain blob data rather than
<methodname>ResultSet.getBinaryStream</methodname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseGetObjectForBlobs">
                    <para>
                    <indexterm>
                        <primary>
                            BLOB
                        </primary>
                        <secondary>
                            UseGetObjectForBlobs
                        </secondary>
                    </indexterm>
<literal>UseGetObjectForBlobs</literal>: When true, <methodname>
ResultSet.getObject</methodname> will be used to obtain blob data rather than
<methodname>ResultSet.getBinaryStream</methodname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseGetStringForClobs">
                    <para>
                    <indexterm>
                        <primary>
                            CLOB
                        </primary>
                        <secondary>
                            UseGetStringForClobs
                        </secondary>
                    </indexterm>
<literal>UseGetStringForClobs</literal>: When true, <methodname>
ResultSet.getString</methodname> will be used to obtain clob data rather than
<methodname>ResultSet.getCharacterStream</methodname>.
                    </para>
                </listitem>

                <listitem id="DBDictionary.UseJDBC4SetBinaryStream">
                    <para>
                    <indexterm>
                        <primary>
                            JDBC
                        </primary>
                        <secondary>
                            UseJDBC4SetBinaryStream
                        </secondary>
                    </indexterm>
<literal>UseJDBC4SetBinaryStream</literal>: When true, an attempt will be made to obtain
a JDBC 4.0 version of <methodname>PreparedStatement.setBinaryStream</methodname>.
When false, a <methodname>setBinaryStream</methodname> is used which takes the length of the
stream.  OpenJPA uses a -1 for the length since OpenJPA doesn't know the length of the stream.
A few JDBC drivers check the length and throw an exception when the length is less than zero.
When this property is set to true, and an applicable JDK and JDBC 4.0 driver is available, a
version of <methodname>setBinaryStream</methodname> will be used which does not take a length.
The default value of this property is true.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseNativeSequenceCache">
                    <para>
                    <indexterm>
                        <primary>
                            Sequence
                        </primary>
                        <secondary>
                            UseNativeSequenceCache
                        </secondary>
                    </indexterm>
<literal>UseNativeSequenceCache</literal>: This property was introduced in
the 2.1.2 release to indicate (when set to <literal>false</literal>) that OpenJPA
should not use the <literal>CACHE</literal> clause when creating a native sequence; instead
the <literal>INCREMENT BY</literal> clause gets its value equal to the allocationSize
property.  In the 2.2.0 release, code was added to allow said functionality by
default (see OPENJPA-1376).
For forward compatibility, this property still remains, however it has
been deprecated and will eventually be removed.  Setting this property
has no effect and any occurrence of it should be removed.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseSchemaName">
                    <para>
                    <indexterm>
                        <primary>
                            schema
                        </primary>
                        <secondary>
                            UseSchemaName
                        </secondary>
                    </indexterm>
<literal>UseSchemaName</literal>: If <literal>false</literal>, then avoid
including the schema name in table name references. Defaults to <literal>true
</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseSetBytesForBlobs">
                    <para>
                    <indexterm>
                        <primary>
                            BLOB
                        </primary>
                        <secondary>
                            UseSetBytesForBlobs
                        </secondary>
                    </indexterm>
<literal>UseSetBytesForBlobs</literal>: When true, <methodname>
PreparedStatement.setBytes</methodname> will be used to set blob data, rather
than <methodname>PreparedStatement.setBinaryStream</methodname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseSetStringForClobs">
                    <para>
                    <indexterm>
                        <primary>
                            CLOB
                        </primary>
                        <secondary>
                            UseSetStringForClobs
                        </secondary>
                    </indexterm>
<literal>UseSetStringForClobs</literal>: When true, <methodname>
PreparedStatement.setString</methodname> will be used to set clob data, rather
than <methodname>PreparedStatement.setCharacterStream</methodname>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.UseWildCardForCount">
                    <para>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            UseWildCardForCount
                        </secondary>
                    </indexterm>
<literal>UseWildCardForCount</literal>: When true, the JPQL <literal>COUNT</literal>
aggregate function will be translated into SQL <literal>COUNT(*)</literal> expression
if the SQL query does not involve joins. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.ValidationSQL">
                    <para>
                    <indexterm>
                        <primary>
                            connections
                        </primary>
                        <secondary>
                            ValidationSQL
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            SQL
                        </primary>
                        <secondary>
                            ValidationSQL
                        </secondary>
                    </indexterm>
<literal>ValidationSQL</literal>: The SQL used to validate that a connection is
still in a valid state. For example, <literal>"SELECT SYSDATE FROM DUAL"
</literal> for Oracle.
                    </para>
                </listitem>
                <listitem id="DBDictionary.VarbinaryTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            VarbinaryTypeName
                        </secondary>
                    </indexterm>
<literal>VarbinaryTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.VARBINARY</literal>. This is used only when the schema
is generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.VarcharTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            VarcharTypeName
                        </secondary>
                    </indexterm>
<literal>VarcharTypeName</literal>: The overridden default column type for
<literal>java.sql.Types.VARCHAR</literal>. This is used only when the schema is
generated by the <literal>mappingtool</literal>.
                    </para>
                </listitem>
                <listitem id="DBDictionary.XmlTypeName">
                    <para>
                    <indexterm>
                        <primary>
                            DDL
                        </primary>
                        <secondary>
                            XmlTypeName
                        </secondary>
                    </indexterm>
<literal>XmlTypeName</literal>:
The column type name for XML columns.  This
property is set automatically in the dictionary and should not need to be
overridden.  It is used only when the schema is generated using the
<literal>mappingtool</literal>.  Defaults to <literal>"XML"</literal>.
                    </para>
                </listitem>
            <!-- Please keep the list of dictionary properties
                 in alphabetical order -->
            </itemizedlist>
        </section>
        <section id="ref_guide_dbsetup_dbsupport_firebird">
            <title>
                FirebirdDictionary Properties
            </title>
            <indexterm zone="ref_guide_dbsetup_dbsupport_firebird">
                <primary>
                    Firebird
                </primary>
                <seealso>
                    DBDictionary
                </seealso>
            </indexterm>
            <para>
The <literal>firebird</literal> dictionary understands the following additional
properties:
            </para>
            <itemizedlist>
                <listitem id="FirebirdDictionary.FirebirdVersion">
                    <para>
                    <indexterm>
                        <primary>
                            Firebird
                        </primary>
                        <secondary>
                            FirebirdVersion
                        </secondary>
                    </indexterm>
<literal>FirebirdVersion</literal>: The database version OpenJPA connects to.
This property affects the SQL statements executed by OpenJPA.
Available values are: 15, 20 and 21
- they indicate Firebird versions 1.5, 2.0 and 2.1 respectively.
If not set, the value will be auto-detected.
                    </para>
                </listitem>
                <listitem id="FirebirdDictionary.IndexedVarcharMaxSizeFB15">
                    <para>
                    <indexterm>
                        <primary>
                            Firebird
                        </primary>
                        <secondary>
                            IndexedVarcharMaxSizeFB15
                        </secondary>
                    </indexterm>
<literal>IndexedVarcharMaxSizeFB15</literal>: Firebird 1.5 imposes
tight limits on index size. In particular, an indexed
<literal>VARCHAR</literal> column size cannot exceed 252.
When <link linkend="ref_guide_mapping_mappingtool">schema is created</link>,
OpenJPA will use this property to reduce the size
of indexed <literal>VARCHAR</literal> columns.
Defaults to 252 but you might want to decrease this value if multi-column
indexes are used. If the Firebird version is 2.0 or later or
schema creation is not used, this property does not matter.
                    </para>
                </listitem>
                <listitem id="FirebirdDictionary.RangeSyntax">
                    <para>
                    <indexterm>
                        <primary>
                            Firebird
                        </primary>
                        <secondary>
                            RangeSyntax
                        </secondary>
                    </indexterm>
<literal>RangeSyntax</literal>: Firebird 2.0 and later support two
ways of handling queries that select a range of data:
<literal>"FIRST &lt;p&gt; SKIP &lt;q&gt;"</literal> and
<literal>"ROWS &lt;m&gt; TO &lt;n&gt;"</literal>. Earlier versions support only
<literal>"FIRST &lt;p&gt; SKIP &lt;q&gt;"</literal> syntax.
This property determines the syntax to be used.
Available values are:
<literal>"firstskip"</literal> and <literal>"rows"</literal>.
Defaults to using <literal>"ROWS &lt;m&gt; TO &lt;n&gt;"</literal> if the
Firebird version is 2.0 or later, and
<literal>"FIRST &lt;p&gt; SKIP &lt;q&gt;"</literal> otherwise.
                    </para>
                </listitem>
            </itemizedlist>
        </section>
        <section id="ref_guide_dbsetup_dbsupport_mysql">
            <title>
                MySQLDictionary Properties
            </title>
            <indexterm zone="ref_guide_dbsetup_dbsupport_mysql">
                <primary>
                    MySQL
                </primary>
                <seealso>
                    DBDictionary
                </seealso>
            </indexterm>
            <para>
The <literal>mysql</literal> dictionary also understands the following
properties:
            </para>
            <itemizedlist>
                <listitem id="MySQLDictionary.DateFractionDigits">
                    <para>
                        <indexterm>
                            <primary>
                                MySQL
                            </primary>
                            <secondary>
                                DateFractionDigits
                            </secondary>
                        </indexterm>
                        <literal>DateFractionDigits</literal>:
                        Since MySQL 5.8 a timestamp (<code>DATETIME</code>) can store up to 6 sub-second fractions.
                        The default in MySQL and OpenJPA is 0 for backward compatibility reasons.
                        This default can be changed by setting <literal>DateFractionDigits</literal> to the number of
                        sub-second fraction digits to be stored. This will e.g. result in a <code>DATETIME(6)</code> column.
                        The number of fraction digits to be generated can also be tweaked via the
                        <code>@Column(scale=n)</code> annotation, where n is the number of digits.
                        This setting has primarily an impact on the generated SQL.
                    </para>
                </listitem>
                <listitem id="MySQLDictionary.DriverDeserializesBlobs">
                    <para>
                    <indexterm>
                        <primary>
                            MySQL
                        </primary>
                        <secondary>
                            DriverDeserializesBlobs
                        </secondary>
                    </indexterm>
<literal>DriverDeserializesBlobs</literal>: Many older MySQL drivers
automatically deserialize BLOBs on calls to
<methodname>ResultSet.getObject</methodname>. The
<classname>MySQLDictionary</classname> overrides the standard <methodname>
DBDictionary.getBlobObject</methodname> method to take this into account.
Defaults to <literal>true</literal> if driver version is less than 5.0,
<literal>false</literal> otherwise. If your driver deserializes
automatically, you may want to set this property to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="MySQLDictionary.TableType">
                    <para>
                    <indexterm>
                        <primary>
                            MySQL
                        </primary>
                        <secondary>
                            TableType
                        </secondary>
                    </indexterm>
<literal>TableType</literal>: The MySQL table type to use when creating tables.
Defaults to <literal>"innodb"</literal>.
                    </para>
                </listitem>
                <listitem id="MySQLDictionary.UseClobs">
                    <para>
                    <indexterm>
                        <primary>
                            MySQL
                        </primary>
                        <secondary>
                            UseClobs
                        </secondary>
                    </indexterm>
<literal>UseClobs</literal>: Some older versions of MySQL do not handle CLOBs
correctly. To disable CLOB functionality, set this to <literal>false</literal>.
Defaults to <literal>true</literal>.
                    </para>
                </listitem>
                <listitem id="MySQLDictionary.OptimizeMultiTableDeletes">
                    <para>
                    <indexterm>
                        <primary>
                            MySQL
                        </primary>
                        <secondary>
                            OptimizeMultiTableDeletes
                        </secondary>
                    </indexterm>
<literal>OptimizeMultiTableDeletes</literal>: MySQL as of version 4.0.0
supports multiple tables in <literal>DELETE</literal> statements. When
this option is set, OpenJPA will use that syntax when doing bulk deletes
from multiple tables. This can happen when the
<literal>deleteTableContents</literal> <literal>SchemaTool</literal>
action is used. (See <xref linkend="ref_guide_schema_schematool"/> for
more info about <literal>deleteTableContents</literal>.) Defaults to
<literal>false</literal>, since the statement may fail if using InnoDB
tables and delete constraints.
                    </para>

                </listitem>
            </itemizedlist>

                    <para>
Starting with Connector/J 3.1.7, MySQL supports a variant of the driver
<literal>com.mysql.jdbc.ReplicationDriver</literal> that automatically sends
queries to a read/write master, or a failover or round-robin load balanced set
of slaves based on the state of read-only status of the connection.
See  <ulink url="http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html">
MySQL Reference</ulink> for more details.
                    </para>
                    <para>
This replication feature can be used transparently with OpenJPA application by
following configuration:
                    </para>
        <itemizedlist>
           <listitem>
             <para>
<literal>openjpa.ConnectionDriverName: com.mysql.jdbc.ReplicationDriver</literal>
             </para>
           </listitem>
           <listitem>
             <para>
<literal>openjpa.ConnectionFactoryProperties: autoReconnect=true,roundRobinLoadBalance=true</literal>
             </para>
             <para>
OpenJPA will use a read-only connection with replicated database configuration
and will automatically switch the connection to a non-readonly mode if the
transaction is writing to the database.
             </para>
           </listitem>
         </itemizedlist>
        </section>
        <section id="ref_guide_dbsetup_dbsupport_oracle">
            <title>
                OracleDictionary Properties
            </title>
            <indexterm zone="ref_guide_dbsetup_dbsupport_oracle">
                <primary>
                    Oracle
                </primary>
                <seealso>
                    DBDictionary
                </seealso>
            </indexterm>
            <para>
The <literal>oracle</literal> dictionary understands the following additional
properties:
            </para>
            <itemizedlist>
                <listitem id="OracleDictionary.UseTriggersForAutoAssign">
                    <para>
                    <indexterm>
                        <primary>
                            Oracle
                        </primary>
                        <secondary>
                            UseTriggersForAutoAssign
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            automatic field values
                        </secondary>
                        <tertiary>
                            UseTriggersForAutoAssign
                        </tertiary>
                    </indexterm>
<literal>UseTriggersForAutoAssign</literal>: When true, OpenJPA will allow
simulation of auto-increment columns by the use of Oracle triggers. OpenJPA will
assume that the current sequence value from the sequence specified in the
<literal>AutoAssignSequenceName</literal> parameter will hold the value of the
new primary key for rows that have been inserted. For more details on
auto-increment support, see <xref linkend="ref_guide_pc_oid_pkgen_autoinc"/>
.
                    </para>
                </listitem>
                <listitem id="OracleDictionary.AutoAssignSequenceName">
                    <para>
                    <indexterm>
                        <primary>
                            Oracle
                        </primary>
                        <secondary>
                            AutoAssignSequenceName
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            persistent fields
                        </primary>
                        <secondary>
                            automatic field values
                        </secondary>
                        <tertiary>
                            AutoAssignSequenceName
                        </tertiary>
                    </indexterm>
<literal>AutoAssignSequenceName</literal>: The global name of the sequence that
OpenJPA will assume to hold the value of primary key value for rows that use
auto-increment. If left unset, OpenJPA will use a sequence named <literal>
"&lt;table name&gt;_&lt;column name&gt;_SEQ"</literal>.
                    </para>
                </listitem>
                <listitem id="OracleDictionary.MaxEmbeddedBlobSize">
                    <para>
                    <indexterm>
                        <primary>
                            Oracle
                        </primary>
                        <secondary>
                            MaxEmbeddedBlobSize
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            BLOB
                        </primary>
                        <secondary>
                            MaxEmbeddedBlobSize
                        </secondary>
                    </indexterm>
<literal>MaxEmbeddedBlobSize</literal>: Oracle is unable to persist BLOBs using
the embedded update method when BLOBs get over a certain size. The size depends
on database configuration, e.g. encoding. This property defines the maximum size
BLOB to persist with the embedded method. Defaults to 4000 bytes.
                    </para>
                </listitem>
                <listitem id="OracleDictionary.MaxEmbeddedClobSize">
                    <para>
                    <indexterm>
                        <primary>
                            Oracle
                        </primary>
                        <secondary>
                            MaxEmbeddedClobSize
                        </secondary>
                    </indexterm>
                    <indexterm>
                        <primary>
                            CLOB
                        </primary>
                        <secondary>
                            MaxEmbeddedClobSize
                        </secondary>
                    </indexterm>
<literal>MaxEmbeddedClobSize</literal>: Oracle is unable to persist CLOBs using
the embedded update method when CLOBs get over a certain size. The size depends
on database configuration, e.g. encoding. This property defines the maximum size
CLOB to persist with the embedded method. Defaults to 4000 characters.
                    </para>
                </listitem>
                <listitem id="OracleDictionary.SupportsSetClob">
                    <para>
<literal>SupportsSetClob</literal>: This property was used in releases previous
to OpenJPA 2.2.0
to indicate that OpenJPA should attempt to use a Reader-based JDBC 4.0 method to
set CLOB or XML data.  It allowed XMLType and CLOB values larger than 4000 bytes
to be used.  For OpenJPA 2.2.0 and later releases, code was added to allow said
functionality by default (see OPENJPA-1691).  For forward compatibility, this
property still remains, however it has been deprecated and will eventually be
removed.  Setting this property has no effect and any occurrence of it should
be removed.
                    </para>
                </listitem>
                <listitem id="OracleDictionary.UseSetFormOfUseForUnicode">
                    <para>
<literal>UseSetFormOfUseForUnicode</literal>: Prior to Oracle 10i, statements
executed against unicode capable columns (the <literal>NCHAR</literal>,
<literal>NVARCHAR</literal>, <literal>NCLOB</literal> Oracle types) required
special handling to be able to store unicode values. Setting this property to
<literal>true</literal> (the default) will cause OpenJPA to attempt to detect when the column is
one of these types, and if so, will attempt to correctly configure the statement
using the <methodname> OraclePreparedStatement.setFormOfUse</methodname>. For
more details, see the Oracle
<ulink url="http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch7progrunicode.htm#i1006858">
JDBC Programming with Unicode</ulink>. Note that this can only work if OpenJPA is able to
access the underlying <classname>OraclePreparedStatement</classname> instance,
which may not be possible when using some third-party datasources. If OpenJPA
detects that this is the case, a warning will be logged.
                    </para>
                </listitem>
            </itemizedlist>
        </section>
        <section id="ref_guide_dbsetup_dbsupport_sybase">
            <title>
                SybaseDictionary Properties
            </title>
            <indexterm zone="ref_guide_dbsetup_dbsupport_sybase">
                <primary>
                    Sybase
                </primary>
                <seealso>
                    DBDictionary
                </seealso>
            </indexterm>
            <para>
The <literal>sybase</literal> dictionary understands the following additional
properties:
            </para>
            <itemizedlist>
                <listitem id="SybaseDictionary.IgnoreNumericTruncation">
                    <para>
                    <indexterm>
                        <primary>
                            Sybase
                        </primary>
                        <secondary>
                            IgnoreNumericTruncation
                        </secondary>
                    </indexterm>
<literal>IgnoreNumericTruncation</literal>: If true, Sybase will ignore numeric
truncation on SQL operations.  Otherwise, if numeric truncation is detected,
the operation will fail.
                    </para>
                </listitem>
            </itemizedlist>
        </section>

        <section id="ref_guide_dbsetup_dbsupport_db2">
            <title>
                DB2 Properties
            </title>
            <indexterm zone="ref_guide_dbsetup_dbsupport_db2">
                <primary>
                    DB2
                </primary>
                <seealso>
                    DBDictionary
                </seealso>
            </indexterm>
            <para>
The <literal>db2</literal> dictionary understands the following additional
properties:
            </para>
            <itemizedlist>
                <listitem id="DB2Dictionary.AppendExtendedExceptionText">
                    <para>
                    <indexterm>
                        <primary>
                            DB2
                        </primary>
                        <secondary>
                            AppendExtendedExceptionText
                        </secondary>
                    </indexterm>
<literal>AppendExtendedExceptionText</literal>: If false, OpenJPA will not call back to the database to
get extended exception text.
                    </para>
                </listitem>

            <listitem id="DB2Dictionary.SupportsRowNum">
                    <para>
                    <indexterm>
                        <primary>
                            DB2
                        </primary>
                        <secondary>
                            SupportsRowNum
                        </secondary>
                    </indexterm>
<literal>SupportsRowNum</literal>: If true, OpenJPA will use <literal>ROWNUM</literal> facility
for range based queries that set an offset and/or limit via <literal>setFirstResult()</literal>
and <literal>setMaxResult()</literal> query methods. This property must be set to <literal>true</literal>
alongwith <lietral>SupportsSelectStartIndex</lietral> and <lietral>SupportsSelectEndIndex</lietral>.
By default, <literal>SupportsRowNum</literal> is set to <literal>false</literal>.
It is appropriate to set <literal>SupportsRowNum</literal> to <literal>true</literal> only when
DB2 version being used is 9.7 or later.

                    </para>
                </listitem>
            </itemizedlist>

        </section>
        <section id="ref_guide_dbsetup_dbsupport_delim_id">
        	<title>
        		Delimited Identifiers Support
        	</title>
        	<para>
OpenJPA provides support for delimited identifiers as defined in the JPA 2.0 specification.
Identifiers can either be automatically delimited or individually manually
delimited. To have OpenJPA automatically delimit identifiers, add the
<literal>&lt;delimited-identifiers/&gt;</literal> tag
to the mapping file as documented in the JPA specification.
			</para>
			<para>
You can manually delimit individual identifiers either in the annotations or in the
definitions in the mapping file. To delimit an identifier element in an annotation,
surround it with double quotes. In a mapping file, add
<literal>&amp;quote;</literal> to both the beginning and end of the element.
        	</para>
        	<para>
When delimited identifiers has been specified, OpenJPA will delimit SQL identifiers
in the generated SQL statements. It will use database-specific delimiters as defined
in the appropriate database dictionary. By default, the leading and trailing
delimiters are both double quotes, <literal>(")</literal>. Different defaults for other
dictionaries provided by OpenJPA are in the following table.
        	</para>
        	<table tocentry="1">
        		<title>
        			Default delimiters for delimited identifiers
        		</title>
        		<tgroup cols="3" align="left" colsep="1" rowsep="1">
        			<colspec colname="dict"/>
        			<colspec colname="lead"/>
        			<colspec colname="trail"/>
        			<thead>
                		<row>
                    		<entry colname="dict">
                        		Dictionary
                    		</entry>
                    		<entry colname="lead">
                    			Leading Delimiter
                    		</entry>
                    		<entry colname="trail">
                    			Trailing Delimiter
                    		</entry>
                    	</row>
                    </thead>
                    <tbody>
                    	<row>
                    		<entry colname="dict">
                    			MySQLDictionary
                    		</entry>
                    		<entry colname="lead" align="center">
                    			`
                    		</entry>
                    		<entry colname="trail" align="center">
                    			`
                    		</entry>
                    	</row>
                    	<row>
                    		<entry colname="dict">
                    			AccessDictionary
                    		</entry>
                    		<entry colname="lead" align="center">
                    			[
                    		</entry>
                    		<entry colname="trail" align="center">
                    			]
                    		</entry>
                    	</row>
                    </tbody>
        		</tgroup>
        	</table>
        	<para>
Some databases support more than one set of delimiters, often based on configuration.
If you need values different than the default values, you can set the
<link linkend="DBDicationary.LeadingDelimiter"><literal>LeadingDelimiter</literal></link>
and the
<link linkend="DBDicationary.TrailingDelimiter"><literal>TrailingDelimiter</literal></link>
dictionary properties.
        	</para>
        	<para>
You can specify whether or not the particular database that you are using supports delimited
identifiers by setting the
<link linkend="DBDictionary.SupportsDelimitedIdentifiers"><literal>SupportsDelimitedIdentifiers</literal></link>
dictionary property. If this value is set to <literal>false</literal>, identifiers will not be automatically
delimited, even if the <literal>&lt;delimited-identifiers/&gt;</literal> tag is specified
in the mapping file.
        	</para>
        	<para>
<literal>Limitation:</literal> The <literal>columnDefinition</literal> elements in identifiers
are not automatically delimited by OpenJPA when using the
<literal>&lt;delimited-identifiers/&gt;</literal> tag
in the mapping file. If you want these to be delimited, you must manually delimit them in
the annotation or mapping file definitions.
        	</para>
        </section>

    </section>
    <section id="ref_guide_dbsetup_isolation">
        <title>
            Setting the Transaction Isolation
        </title>
        <indexterm zone="ref_guide_dbsetup_isolation">
            <primary>
                transactions
            </primary>
            <secondary>
                isolation
            </secondary>
        </indexterm>
        <indexterm zone="ref_guide_dbsetup_isolation">
            <primary>
                JDBC
            </primary>
            <secondary>
                transaction isolation
            </secondary>
        </indexterm>
        <indexterm>
            <primary>
                TransactionIsolation
            </primary>
        </indexterm>
        <para>
OpenJPA typically retains the default transaction isolation level of the JDBC
driver. However, you can specify a transaction isolation level to use through
the <link linkend="openjpa.jdbc.TransactionIsolation"><literal>
openjpa.jdbc.TransactionIsolation</literal></link> configuration property. The
following is a list of standard isolation levels. Note that not all databases
support all isolation levels.
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>default</literal>: Use the JDBC driver's default isolation level.
OpenJPA uses this option if you do not explicitly specify any other.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>none</literal>: No transaction isolation.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>read-committed</literal>: Dirty reads are prevented; non-repeatable
reads and phantom reads can occur.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>read-uncommitted</literal>: Dirty reads, non-repeatable reads and
phantom reads can occur.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>repeatable-read</literal>: Dirty reads and non-repeatable reads are
prevented; phantom reads can occur.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>serializable</literal>: Dirty reads, non-repeatable reads, and phantom
reads are prevented.
                </para>
            </listitem>openjpa-project/src/doc/manual/ref_guide_dbsetup.xml
        </itemizedlist>
        <example id="ref_guide_dbsetup_isoex">
            <title>
                Specifying a Transaction Isolation
            </title>
<programlisting>
&lt;property name="openjpa.jdbc.TransactionIsolation" value="repeatable-read"/&gt;
</programlisting>
        </example>
    </section>
    <section id="ref_guide_dbsetup_sql92">
        <title>
            Setting the SQL Join Syntax
        </title>
        <indexterm zone="ref_guide_dbsetup_sql92">
            <primary>
                joins
            </primary>
            <secondary>
                syntax options
            </secondary>
        </indexterm>
        <indexterm zone="ref_guide_dbsetup_sql92">
            <primary>
                SQL
            </primary>
            <secondary>
                join syntax
            </secondary>
        </indexterm>
        <para>
Object queries often involve using SQL joins behind the scenes. You can
configure OpenJPA to use either SQL 92-style join syntax, in which joins are
placed in the SQL FROM clause, the traditional join syntax, in which join
criteria are part of the WHERE clause, or a database-specific join syntax
mandated by the <link linkend="ref_guide_dbsetup_dbdict"><classname>
DBDictionary</classname></link>. OpenJPA only supports outer joins when using
SQL 92 syntax or a database-specific syntax with outer join support.
        </para>
        <para>
The <link linkend="openjpa.jdbc.DBDictionary"><literal>
openjpa.jdbc.DBDictionary</literal></link> plugin accepts the <literal>
JoinSyntax</literal> property to set the system's default syntax. The available
values are:
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>traditional</literal>: Traditional SQL join syntax; outer joins are
not supported.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>database</literal>: The database's native join syntax. Databases that
do not have a native syntax will default to one of the other options.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>sql92</literal>: ANSI SQL92 join syntax. Outer joins are supported.
Not all databases support this syntax.
                </para>
            </listitem>
        </itemizedlist>
        <para>
You can change the join syntax at runtime through the OpenJPA fetch
configuration API, which is described in <xref linkend="ref_guide_runtime"/>.
        </para>
        <example id="ref_guide_dbsetup_sql92_conf">
            <title>
                Specifying the Join Syntax Default
            </title>
<programlisting>
&lt;property name="openjpa.jdbc.DBDictionary" value="JoinSyntax=sql92"/&gt;
</programlisting>
        </example>
        <example id="ref_guide_dbsetup_sql92_fetch">
            <title>
                Specifying the Join Syntax at Runtime
            </title>
<programlisting>
import org.apache.openjpa.persistence.jdbc.*;

...

Query q = em.createQuery("select m from Magazine m where m.title = 'JDJ'");
OpenJPAQuery kq = OpenJPAPersistence.cast(q);
JDBCFetchPlan fetch = (JDBCFetchPlan) kq.getFetchPlan();
fetch.setJoinSyntax(JoinSyntax.SQL92);
List results = q.getResultList();
</programlisting>
        </example>
    </section>
    <section id="ref_guide_dbsetup_multidb">
        <title>
            Accessing Multiple Databases
        </title>
        <indexterm zone="ref_guide_dbsetup_multidb">
            <primary>
                relational database
            </primary>
            <secondary>
                accessing multiple databases
            </secondary>
        </indexterm>
        <para>
Through the properties we've covered thus far, you can configure each
<classname>EntityManagerFactory</classname> to access a different
database. If your application accesses multiple databases, we recommend that you
maintain a separate persistence unit for each one. This will allow you to easily
load the appropriate resource for each database at runtime, and to give the
correct configuration file to OpenJPA's command-line tools during development.
        </para>
    </section>
    <section id="ref_guide_dbsetup_retain">
        <title>
            Configuring the Use of JDBC Connections
        </title>
        <indexterm zone="ref_guide_dbsetup_retain">
            <primary>
                connections
            </primary>
            <secondary>
                usage
            </secondary>
        </indexterm>
        <para>
In its default configuration, OpenJPA obtains JDBC connections on an as-needed
basis. OpenJPA <classname>EntityManager</classname>s do not retain a connection
to the database unless they are in a datastore transaction or there are open
<classname>Query</classname> results that are using a live JDBC result set. At
all other times, including during optimistic transactions, <classname>
EntityManager</classname>s request a connection for each query, then
immediately release the connection back to the pool.
        </para>
        <para>
        <indexterm>
            <primary>
                ConnectionRetainMode
            </primary>
        </indexterm>
In some cases, it may be more efficient to retain connections for longer periods
of time. You can configure OpenJPA's use of JDBC connections through the
<link linkend="openjpa.ConnectionRetainMode"><literal>
openjpa.ConnectionRetainMode</literal></link> configuration property. The
property accepts the following values:
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>always</literal>: Each <classname>EntityManager</classname> obtains a
single connection and uses it until the <classname>EntityManager</classname>
closes. Great care should be taken when using this property if the application
cannot close the EntityManager (i.e. container-managed EntityManagers in a JEE
Application Server). In this case the connection will remain open for an
undefined time and the application may not be able to recover from a terminated
connection (for example, if a TCP/IP timeout severs the connection to the database).
For this reason the <literal>always</literal> option should not be used with
container-managed EntityManagers.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>transaction</literal>: A connection is obtained when each transaction
begins (optimistic or datastore), and is released when the transaction
completes. Non-transactional connections are obtained on-demand.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>on-demand</literal>: Connections are obtained only when needed. This
option is equivalent to the <literal>transaction</literal> option when datastore
transactions are used. For optimistic transactions, though, it means that a
connection will be retained only for the duration of the datastore flush and
commit process.
                </para>
            </listitem>
        </itemizedlist>
        <para>
You can also specify the connection retain mode of individual <classname>
EntityManager</classname>s when you retrieve them from the <classname>
EntityManagerFactory</classname>. See
<xref linkend="ref_guide_runtime_emfactory"/> for details.
        </para>
        <para>
        <indexterm>
            <primary>
                FlushBeforeQueries
            </primary>
        </indexterm>
The <link linkend="openjpa.FlushBeforeQueries"><literal>
openjpa.FlushBeforeQueries</literal></link> configuration property controls
another aspect of connection usage: whether to flush transactional changes
before executing object queries. This setting only applies to queries that would
otherwise have to be executed in-memory because the
<link linkend="openjpa.IgnoreChanges"><literal>IgnoreChanges</literal></link>
property is set to false and the query may involve objects that have been
changed in the current transaction. Legal values are:
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>true</literal>: Always flush rather than executing the query
in-memory. If the current transaction is optimistic, OpenJPA will begin a
non-locking datastore transaction. This is the default.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>false</literal>: Never flush before a query.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>with-connection</literal>: Flush only if the <classname>EntityManager
</classname> has already established a dedicated connection to the datastore,
otherwise execute the query in-memory.
This option is useful if you use long-running optimistic transactions and want
to ensure that these transactions do not consume database resources until
commit. OpenJPA's behavior with this option is dependent on the transaction
status and mode, as well as the configured connection retain mode described
earlier in this section.
                </para>
            </listitem>
        </itemizedlist>
        <para>
The flush mode can also be varied at runtime using the OpenJPA fetch
configuration API, discussed in <xref linkend="ref_guide_runtime"/>.
        </para>
        <para>
        <indexterm>
            <primary>
                flush
            </primary>
            <secondary>
                automatic
            </secondary>
        </indexterm>
The table below describes the behavior of automatic flushing in various
situations. In all cases, flushing will only occur if OpenJPA detects that you
have made modifications in the current transaction that may affect the query's
results.
        </para>
        <table>
            <title>
                OpenJPA Automatic Flush Behavior
            </title>
            <tgroup rowsep="1" colsep="1" align="left" cols="5">
                <colspec colname="col1"/>

                <colspec colname="col2"/>

                <colspec colname="col3"/>

                <colspec colname="col4"/>

                <colspec colname="col5"/>

                <thead>
                    <row>
                        <entry colname="col1">
                        </entry>
                        <entry colname="col2">
FlushBeforeQueries = false
                        </entry>
                        <entry colname="col3">
FlushBeforeQueries = true
                        </entry>
                        <entry colname="col4">
FlushBeforeQueries = with-connection;
ConnectionRetainMode = on-demand
                        </entry>
                        <entry colname="col5">
FlushBeforeQueries = with-connection;
ConnectionRetainMode = transaction or always
                        </entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry colname="col1">
                            <emphasis role="bold">
IgnoreChanges = true
                            </emphasis>
                        </entry>
                        <entry colname="col2">
no flush
                        </entry>
                        <entry colname="col3">
no flush
                        </entry>
                        <entry colname="col4">
no flush
                        </entry>
                        <entry colname="col5">
no flush
                        </entry>
                    </row>
                    <row>
                        <entry colname="col1">
                            <emphasis role="bold">
IgnoreChanges = false; no tx active
                            </emphasis>
                        </entry>
                        <entry colname="col2">
no flush
                        </entry>
                        <entry colname="col3">
no flush
                        </entry>
                        <entry colname="col4">
no flush
                        </entry>
                        <entry colname="col5">
no flush
                        </entry>
                    </row>
                    <row>
                        <entry colname="col1">
                            <emphasis role="bold">
IgnoreChanges = false; datastore tx active
                            </emphasis>
                        </entry>
                        <entry colname="col2">
no flush
                        </entry>
                        <entry colname="col3">
flush
                        </entry>
                        <entry colname="col4">
flush
                        </entry>
                        <entry colname="col5">
flush
                        </entry>
                    </row>
                    <row>
                        <entry colname="col1">
                            <emphasis role="bold">
IgnoreChanges = false; optimistic tx active
                            </emphasis>
                        </entry>
                        <entry colname="col2">
no flush
                        </entry>
                        <entry colname="col3">
flush
                        </entry>
                        <entry colname="col4">
no flush unless <methodname>flush</methodname> has already been invoked
                        </entry>
                        <entry colname="col5">
flush
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>
        <example id="ref_guide_dbsetup_sql92_retain_conf">
            <title>
                Specifying Connection Usage Defaults
            </title>
<programlisting>
&lt;property name="openjpa.ConnectionRetainMode" value="on-demand"/&gt;
&lt;property name="openjpa.FlushBeforeQueries" value="true"/&gt;
</programlisting>
        </example>
        <example id="ref_guide_dbsetup_sql92_retain_runtime">
            <title>
                Specifying Connection Usage at Runtime
            </title>
<programlisting>
import org.apache.openjpa.persistence.*;

// obtaining an em with a certain connection retain mode
Map props = new HashMap();
props.put("openjpa.ConnectionRetainMode", "always");
EntityManager em = emf.createEntityManager(props);
</programlisting>
        </example>
    </section>
    <section id="ref_guide_dbsetup_stmtbatch">
        <title>
            Statement Batching
        </title>
        <indexterm zone="ref_guide_dbsetup_stmtbatch">
            <primary>
                Statement Batching
            </primary>
        </indexterm>
        <indexterm>
            <primary>
                JDBC
            </primary>
            <secondary>
                statement batching
            </secondary>
            <see>
                statement batching
            </see>
        </indexterm>
        <para>
In addition to connection pooling and prepared statement caching, OpenJPA
employs statement batching to speed up JDBC updates. Statement batching is
enabled by default for any JDBC driver that supports it. When batching is on,
OpenJPA automatically orders its SQL statements to maximize the size of each
batch. This can result in large performance gains for transactions that modify
a lot of data.
		</para>
		<para>
You configure statement batching through the system DBDictionary, which is
controlled by the openjpa.jdbc.DBDictionary configuration property. You can
enable the statement batching by setting the batchLimit in the value. The batch
limit is the maximum number of statements OpenJPA will ever batch
together. A value has the following meaning:
			<itemizedlist>
            	<listitem>
               	 <para>
<literal>-1</literal>: Unlimited number of statements for a batch.
                </para>
               </listitem>
               <listitem>
                <para>
<literal>0</literal>: Disable batch support. This is the default for most
dictionaries.
                </para>
               </listitem>
               <listitem>
                <para>
<literal>any positive number</literal>: Maximum number of statements for a batch.
                </para>
               </listitem>
			</itemizedlist>
			<note>
		     <para>
By default, the batch support is based on each Dictionary to define the default
batch limit. Currently only DB2 and Oracle dictionaries are set the default
batch limit to 100. The default batch limit for the rest of the dictionaries is set
to zero (disabled).
			</para>
			</note>
		</para>
		<para>
The example below shows how to enable and disable statement batching via
your configuration properties.
        </para>
        <example id="ref_guide_dbsetup_stmtbatch_exmple1">
            <title>
                Enable SQL statement batching
            </title>
<programlisting>
&lt;property name="openjpa.jdbc.DBDictionary" value="db2(batchLimit=25)"/&gt;
&lt;property name="openjpa.jdbc.DBDictionary" value="oracle(batchLimit=-1)"/&gt;
Or
&lt;property name="openjpa.jdbc.DBDictionary" value="batchLimit=25"/&gt;
&lt;property name="openjpa.jdbc.DBDictionary" value="batchLimit=-1"/&gt;
</programlisting>
        </example>
        <example id="ref_guide_dbsetup_stmtbatch_exmple2">
            <title>
                Disable SQL statement batching
            </title>
<programlisting>
&lt;property name="openjpa.jdbc.DBDictionary" value="db2(batchLimit=0)"/&gt;
Or
&lt;property name="openjpa.jdbc.DBDictionary" value="batchLimit=0"/&gt;
</programlisting>
        </example>
        <para>
By default, org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager
is the default statement batching implementation. OPENJPA also
provides another update manager
org.apache.openjpa.jdbc.kernel.BatchingOperationOrderUpdateManager for the
statements that required ordering.  You can plug-in this update manager through
the "openjpa.jdbc.UpdateManager" property. Or you can plug-in your own
statement batching implementation by providing the implementation that extends
from AbstractUpdateManager, ConstraitUpdateManager or OperationOrderUpdateManager.
Add this implementation
class as a property in the persistence.xml file. For example, a custom
statement batching implementation mycomp.MyUpdateManager extends
ConstraitUpdateManager. You specify this implementation in the persistence.xml
file as the following example:
        </para>
         <example id="ref_guide_dbsetup_stmtbatch_exmple3">
            <title>
                Plug-in custom statement batching implementation
            </title>
<programlisting>
&lt;property name="openjpa.jdbc.UpdateManager" value="mycomp.MyUpdateManager"/&gt;
</programlisting>
        </example>
    </section>
    <section id="ref_guide_dbsetup_lrs">
        <title>
            Large Result Sets
        </title>
        <indexterm zone="ref_guide_dbsetup_lrs">
            <primary>
                large result sets
            </primary>
        </indexterm>
        <indexterm>
            <primary>
                JDBC
            </primary>
            <secondary>
                large result sets
            </secondary>
            <see>
                large result sets
            </see>
        </indexterm>
        <para>
By default, OpenJPA uses standard forward-only JDBC result sets, and completely
instantiates the results of database queries on execution. When using a JDBC
driver that supports version 2.0 or higher of the JDBC specification, however,
you can configure OpenJPA to use scrolling result sets that may not bring all
results into memory at once. You can also configure the number of result objects
OpenJPA keeps references to, allowing you to traverse potentially enormous
amounts of data without exhausting JVM memory.
        </para>
        <note>
            <para>
You can also configure on-demand loading for individual collection and map
fields via large result set proxies. See
<xref linkend="ref_guide_pc_scos_proxy_lrs"/>.
            </para>
        </note>
        <para>
Use the following properties to configure OpenJPA's handling of result sets:
        </para>
        <itemizedlist>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        FetchBatchSize
                    </primary>
                </indexterm>
<link linkend="openjpa.FetchBatchSize"><literal>openjpa.FetchBatchSize</literal>
</link>: The number of objects to instantiate at once when traversing a result
set. This number will be set as the fetch size on JDBC <classname>Statement
</classname> objects used to obtain result sets. It also factors in to the
number of objects OpenJPA will maintain a hard reference to when traversing a
query result.
                </para>
                <para>
The fetch size defaults to -1, meaning all results will be instantiated
immediately on query execution. A value of 0 means to use the JDBC driver's
default batch size. Thus to enable large result set handling, you must set this
property to 0 or to a positive number.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        ResultSetType
                    </primary>
                </indexterm>
<link linkend="openjpa.jdbc.ResultSetType"><literal> openjpa.jdbc.ResultSetType
</literal></link>: The type of result set to use when executing database
queries. This property accepts the following values, each of which corresponds
exactly to the same-named <classname>java.sql.ResultSet</classname> constant:
                </para>
                <itemizedlist>
                    <listitem>
                        <para>
<literal>forward-only</literal>: This is the default.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>scroll-sensitive</literal>
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>scroll-insensitive</literal>
                        </para>
                    </listitem>
                </itemizedlist>
                <para>
Different JDBC drivers treat the different result set types differently. Not all
drivers support all types.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        FetchDirection
                    </primary>
                </indexterm>
<link linkend="openjpa.jdbc.FetchDirection"><literal>
openjpa.jdbc.FetchDirection</literal></link>: The expected order in which you
will access the query results. This property affects the type of data structure
OpenJPA will use to hold the results, and is also given to the JDBC driver in
case it can optimize for certain access patterns. This property accepts the
following values, each of which corresponds exactly to the same-named
<classname>java.sql.ResultSet</classname> FETCH constant:
                </para>
                <itemizedlist>
                    <listitem>
                        <para>
<literal>forward</literal>: This is the default.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>reverse</literal>
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>unknown</literal>
                        </para>
                    </listitem>
                </itemizedlist>
                <para>
Not all drivers support all fetch directions.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        LRSSize
                    </primary>
                </indexterm>
<link linkend="openjpa.jdbc.LRSSize"><literal> openjpa.jdbc.LRSSize</literal>
</link>: The strategy OpenJPA will use to determine the size of result sets.
This property is <emphasis role="bold">only</emphasis> used if you change the
fetch batch size from its default of -1, so that OpenJPA begins to use on-demand
result loading. Available values are:
                </para>
                <itemizedlist>
                    <listitem>
                        <para>
<literal>query</literal>: This is the default. The first time you ask for the
size of a query result, OpenJPA will perform a <literal>SELECT COUNT(*)
</literal> query to determine the number of expected results. Note that
depending on transaction status and settings, this can mean that the reported
size is slightly different than the actual number of results available.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>last</literal>: If you have chosen a scrollable result set type, this
setting will use the <methodname>ResultSet.last</methodname> method to move to
the last element in the result set and get its index. Unfortunately, some JDBC
drivers will bring all results into memory in order to access the last one. Note
that if you do not choose a scrollable result set type, then this will behave
exactly like <literal>unknown</literal>. The default result set type is
<literal>forward-only</literal>, so you must change the result set type in
order for this property to have an effect.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
<literal>unknown</literal>: Under this setting OpenJPA will return <literal>
Integer.MAX_VALUE</literal> as the size for any query result that uses on-demand
loading.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>
        </itemizedlist>
        <example id="ref_guide_dbsetup_lrs_def">
            <title>
                Specifying Result Set Defaults
            </title>
<programlisting>
&lt;property name="openjpa.FetchBatchSize" value="20"/&gt;
&lt;property name="openjpa.jdbc.ResultSetType" value="scroll-insensitive"/&gt;
&lt;property name="openjpa.jdbc.FetchDirection" value="forward"/&gt;
&lt;property name="openjpa.jdbc.LRSSize" value="last"/&gt;
</programlisting>
        </example>
        <para>
Many <link linkend="ref_guide_runtime">OpenJPA runtime components</link> also
have methods to configure these properties on a case-by-case basis through their
fetch configuration. See <xref linkend="ref_guide_runtime"/>.
        </para>
        <example id="ref_guide_dbsetup_lrs_runtime">
            <title>
                Specifying Result Set Behavior at Runtime
            </title>
<programlisting>
import java.sql.*;
import org.apache.openjpa.persistence.jdbc.*;

...

Query q = em.createQuery("select m from Magazine m where m.title = 'JDJ'");
OpenJPAQuery kq = OpenJPAPersistence.cast(q);
JDBCFetchPlan fetch = (JDBCFetchPlan) kq.getFetchPlan();
fetch.setFetchBatchSize(20);
fetch.setResultSetType(ResultSetType.SCROLL_INSENSITIVE);
fetch.setFetchDirection(FetchDirection.FORWARD);
fetch.setLRSSizeAlgorithm(LRSSizeAlgorithm.LAST);
List results = q.getResultList();
</programlisting>
        </example>
    </section>
    <section id="ref_guide_schema_def">
        <title>
            Default Schema
        </title>
        <indexterm zone="ref_guide_schema_def">
            <primary>
                schema
            </primary>
            <secondary>
                default
            </secondary>
        </indexterm>
        <para>
It is common to duplicate a database model in multiple schemas. You may have one
schema for development and another for production, or different database users
may access different schemas. OpenJPA facilitates these patterns with the
<link linkend="openjpa.jdbc.Schema"><literal>openjpa.jdbc.Schema</literal>
</link> configuration property. This property establishes a default schema for
any unqualified table names, allowing you to leave schema names out of your
mapping definitions.
        </para>
        <para>
The <literal>Schema</literal> property also establishes the default schema for
new tables created through OpenJPA tools, such as the mapping tool covered in
<xref linkend="ref_guide_mapping_mappingtool"/>.
        </para>
        <para>
If the entities are mapped to the same table name but with different schema
name within one <literal>PersistenceUnit</literal> intentionally, and the
strategy of <literal>GeneratedType.AUTO</literal> is used to generate the ID
for each entity, a schema name for each entity must be explicitly declared
either through the annotation or the mapping.xml file. Otherwise, the mapping
tool only creates the tables for those entities with the schema names under
each schema. In addition, there will be only one
<literal>OPENJPA_SEQUENCE_TABLE</literal> created for all the entities within
the <literal>PersistenceUnit</literal> if the entities are not identified
with the schema name.
Read <xref linkend="ref_guide_sequence"/> in the Reference Guide.
        </para>
    </section>
    <section id="ref_guide_schema_info">
        <title>
            Schema Reflection
        </title>
        <indexterm zone="ref_guide_schema_info">
            <primary>
                schema
            </primary>
            <secondary>
                reflection
            </secondary>
        </indexterm>
        <para>
OpenJPA needs information about your database schema for two reasons. First, it
can use schema information at runtime to validate that your schema is compatible
with your persistent class definitions. Second, OpenJPA requires schema
information during development so that it can manipulate the schema to match
your object model. OpenJPA uses the <literal>SchemaFactory</literal> interface
to provide runtime mapping information, and the <classname>SchemaTool
</classname> for development-time data. Each is presented below.
        </para>
        <section id="ref_guide_schema_info_list">
            <title>
                Schemas List
            </title>
            <indexterm zone="ref_guide_schema_info_list">
                <primary>
                    Schemas
                </primary>
            </indexterm>
            <indexterm zone="ref_guide_schema_info_list">
                <primary>
                    schema
                </primary>
                <secondary>
                    schemas list
                </secondary>
            </indexterm>
            <para>
By default, schema reflection acts on all the schemas your JDBC driver can
"see". You can limit the schemas and tables OpenJPA acts on with the <literal>
openjpa.jdbc.Schemas</literal> configuration property. This property accepts a
comma-separated list of schemas and tables. To list a schema, list its name. To
list a table, list its full name in the form <literal>
&lt;schema-name&gt;.&lt;table-name&gt;</literal>. If a table does not have a
schema or you do not know its schema, list its name as <literal>
.&lt;table-name&gt;</literal> (notice the preceding '.'). For example, to list
the <literal>BUSOBJS</literal> schema, the <literal>ADDRESS</literal> table in
the <literal>GENERAL</literal> schema, and the <literal>SYSTEM_INFO</literal>
table, regardless of what schema it is in, use the string:
            </para>
<programlisting>
BUSOBJS,GENERAL.ADDRESS,.SYSTEM_INFO
</programlisting>
            <note>
                <para>
Some databases are case-sensitive with respect to schema and table names.
Oracle, for example, requires names in all upper case.
                </para>
            </note>
        </section>
        <section id="ref_guide_schema_info_factory">
            <title>
                Schema Factory
            </title>
            <indexterm zone="ref_guide_schema_info_factory">
                <primary>
                    schema
                </primary>
                <secondary>
                    SchemaFactory
                </secondary>
            </indexterm>
            <para>
OpenJPA relies on the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/SchemaFactory.html">
<classname>openjpa.jdbc.SchemaFactory</classname></ulink> interface for runtime
schema information. You can control the schema factory OpenJPA uses through the
<literal>openjpa.jdbc.SchemaFactory</literal> property. There are several
built-in options to choose from:
            </para>
            <itemizedlist>
                <listitem>
                    <para>
<literal>dynamic</literal>: This is the default setting. It is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.html">
<classname>
org.apache.openjpa.jdbc.schema.DynamicSchemaFactory</classname></ulink>. The
<classname>DynamicSchemaFactory</classname> is the most performant
schema factory, because it does not validate mapping information against the
database. Instead, it assumes all object-relational mapping information is
correct, and dynamically builds an in-memory representation of the schema from
your mapping metadata. When using this factory, it is important that your
mapping metadata correctly represent your database's foreign key constraints so
that OpenJPA can order its SQL statements to meet them.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>native</literal>: This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/LazySchemaFactory.html">
<classname>org.apache.openjpa.jdbc.schema.LazySchemaFactory</classname></ulink>
. As persistent classes are loaded by the application, OpenJPA reads their
metadata and object-relational mapping information. This factory uses the
<classname>java.sql.DatabaseMetaData</classname> interface to reflect on the
schema and ensure that it is consistent with the mapping data being read.
Use this factory if you want up-front validation that your mapping metadata is
consistent with the database during development. This factory accepts the
following important properties:
                    </para>
                    <itemizedlist>
                        <listitem>
                            <para>
<literal>ForeignKeys</literal>: Set to <literal>true</literal> to automatically
read foreign key information during schema validation.
                            </para>
                        </listitem>
                    </itemizedlist>
                </listitem>
                <listitem>
                    <para>
<literal>table</literal>: This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/TableSchemaFactory.html">
<classname>org.apache.openjpa.jdbc.schema.TableSchemaFactory</classname></ulink>
. This schema factory stores schema information as an XML document in a database
table it creates for this purpose. If your JDBC driver doesn't support the
<classname>java.sql.DatabaseMetaData</classname> standard interface, but you
still want some schema validation to occur at runtime, you might use this
factory. It is not recommended for most users, though, because it is easy for
the stored XML schema definition to get out-of-synch with the actual database.
This factory accepts the following properties:
                    </para>
                    <itemizedlist>
                        <listitem>
                            <para>
<literal>Table</literal>: The name of the table to create to store schema
information. Defaults to <literal>OPENJPA_SCHEMA</literal>.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
<literal>PrimaryKeyColumn</literal>: The name of the table's numeric primary
key column. Defaults to <literal>ID</literal>.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
<literal>SchemaColumn</literal>: The name of the table's string column for
holding the schema definition as an XML string. Defaults to <literal>SCHEMA_DEF
</literal>.
                            </para>
                        </listitem>
                    </itemizedlist>
                </listitem>
                <listitem>
                    <para>
<literal>file</literal>: This is an alias for the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/FileSchemaFactory.html">
<classname>org.apache.openjpa.jdbc.schema.FileSchemaFactory</classname></ulink>
. This factory is a lot like the <classname>TableSchemaFactory</classname>, and
has the same advantages and disadvantages. Instead of storing its XML schema
definition in a database table, though, it stores it in a file. This factory
accepts the following properties:
                    </para>
                    <itemizedlist>
                        <listitem>
                            <para>
<literal>File</literal>: The resource name of the XML schema file. By default,
the factory looks for a resource called <filename> package.schema</filename>,
located in any top-level directory of the <literal>CLASSPATH</literal> or in the
top level of any jar in your <literal>CLASSPATH</literal>.
                            </para>
                        </listitem>
                    </itemizedlist>
                </listitem>
            </itemizedlist>
            <para>
You can switch freely between schema factories at any time. The XML file format
used by some factories is detailed in <xref linkend="ref_guide_schema_xml"/>
. As with any OpenJPA plugin, you can also implement your own schema
factory if you have needs not met by the existing options.
            </para>
        </section>
    </section>
    <section id="ref_guide_schema_schematool">
        <title>
            Schema Tool
        </title>
        <indexterm zone="ref_guide_schema_schematool">
            <primary>
                schema
            </primary>
            <secondary>
                schema tool
            </secondary>
        </indexterm>
        <indexterm>
            <primary>
                schema
            </primary>
            <secondary>
                DDL
            </secondary>
            <see>
                DDL
            </see>
        </indexterm>
        <indexterm>
            <primary>
                SQL
            </primary>
            <secondary>
                DDL
            </secondary>
            <see>
                DDL
            </see>
        </indexterm>
        <indexterm zone="ref_guide_schema_schematool">
            <primary>
                DDL
            </primary>
            <secondary>
                with schema tool
            </secondary>
        </indexterm>
        <para>
Most users will only access the schema tool indirectly, through the interfaces
provided by other tools. You may find, however, that the schema tool is a
powerful utility in its own right. The schema tool has two functions:
        </para>
        <orderedlist>
            <listitem>
                <para>
To reflect on the current database schema, optionally translating it to an XML
representation for further manipulation.
                </para>
            </listitem>
            <listitem>
                <para>
To take in an XML schema definition, calculate the differences between the XML
and the existing database schema, and apply the necessary changes to make the
database match the XML.
                </para>
            </listitem>
        </orderedlist>
        <para>
The <link linkend="ref_guide_schema_xml">XML format</link> used by the schema
tool abstracts away the differences between SQL dialects used by different
database vendors. The tool also automatically adapts its SQL to meet foreign key
dependencies. Thus the schema tool is useful as a general way to manipulate
schemas.
        </para>
        <para>
You can invoke the schema tool through its Java class,
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/SchemaTool.html">
<classname>org.apache.openjpa.jdbc.schema.SchemaTool</classname></ulink>. In
addition to the universal flags of the <link linkend="ref_guide_conf">
configuration framework</link>, the schema tool accepts the following command
line arguments:
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>-ignoreErrors/-i &lt;true/t | false/f&gt;</literal>: If <literal>false
</literal>, an exception will be thrown if the tool encounters any database
errors. Defaults to <literal>false</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-file/-f &lt;stdout | output file&gt;</literal>: Use this option to
write a SQL script for the planned schema modifications, rather them committing
them to the database. When used in conjunction with the <literal>export
</literal> or <literal>reflect</literal> actions, the named file will be used to
write the exported schema XML. If the file names a resource in the <literal>
CLASSPATH</literal>, data will be written to that resource. Use <literal>stdout
</literal> to write to standard output. Defaults to <literal>stdout</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-openjpaTables/-ot &lt;true/t | false/f&gt;</literal>: When reflecting
on the schema, whether to reflect on tables and sequences whose names start with
<literal>OPENJPA_</literal>. Certain OpenJPA components may use such tables -
for example, the <literal>table</literal> schema factory option covered in
<xref linkend="ref_guide_schema_info_factory"/>. When using other
actions, <literal>openjpaTables</literal> controls whether these tables can be
dropped. Defaults to <literal>false</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-rollbackBeforeDDL/-rbddl &lt;true/t | false/f&gt;</literal>: Set this option to
<literal>true</literal> to send an initail rollback on the connection before any DDL statement is sent.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-dropTables/-dt &lt;true/t | false/f&gt;</literal>: Set this option to
<literal>true</literal> to drop tables that appear to be unused during <literal>
retain</literal> and <literal>refresh</literal> actions. Defaults to <literal>
true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-dropSequences/-dsq &lt;true/t | false/f&gt;</literal>: Set this
option to <literal>true</literal> to drop sequences that appear to be unused
during <literal>retain</literal> and <literal>refresh</literal> actions.
Defaults to <literal>true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-sequences/-sq &lt;true/t | false/f&gt;</literal>: Whether to
manipulate sequences. Defaults to <literal>true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-indexes/-ix &lt;true/t | false/f&gt;</literal>: Whether to manipulate
indexes on existing tables. Defaults to <literal>true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-primaryKeys/-pk &lt;true/t | false/f&gt;</literal>: Whether to
manipulate primary keys on existing tables. Defaults to <literal>true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-foreignKeys/-fk &lt;true/t | false/f&gt;</literal>: Whether to
manipulate foreign keys on existing tables. Defaults to <literal>true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-record/-r &lt;true/t | false/f&gt;</literal>: Use <literal>false
</literal> to prevent writing the schema changes made by the tool to the current
<link linkend="ref_guide_schema_info_factory"><literal>schema
factory</literal></link>. Defaults to <literal>true</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>-schemas/-s &lt;schema list&gt;</literal>: A list of schema and table
names that OpenJPA should access during this run of the schema tool. This is
equivalent to setting the <link linkend="openjpa.jdbc.Schemas">
openjpa.jdbc.Schemas</link> property for a single run.
                </para>
            </listitem>
        </itemizedlist>
        <para>
The schema tool also accepts an <literal>-action</literal> or <literal>-a
</literal> flag. Multiple actions can be composed in a comma-separated list.
The available actions are:
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>add</literal>: This is the default action if you do not specify one.
It brings the schema up-to-date with the given XML document by adding tables,
columns, indexes, etc. This action never drops any schema components.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>retain</literal>: Keep all schema components in the given XML
definition, but drop the rest from the database. This action never adds any
schema components.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>drop</literal>: Drop all schema components in the schema XML. Tables
will only be dropped if they would have 0 columns after dropping all columns
listed in the XML.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>refresh</literal>: Equivalent to <literal>retain</literal>, then
<literal>add</literal>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>build</literal>: Generate SQL to build a schema matching the one in
the given XML file. Unlike <literal>add</literal>, this option does not take
into account the fact that part of the schema defined in the XML file might
already exist in the database. Therefore, this action is typically used in
conjunction with the <literal>-file</literal> flag to write a SQL script. This
script can later be used to recreate the schema in the XML.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>reflect</literal>: Generate an XML representation of the current
database schema.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>createDB</literal>: Generate SQL to re-create the current database.
This action is typically used in conjunction with the <literal>-file</literal>
flag to write a SQL script that can be used to recreate the current schema on a
fresh database.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>dropDB</literal>: Generate SQL to drop the current database. Like
<literal>createDB</literal>, this action can be used with the <literal>-file
</literal> flag to script a database drop rather than perform it.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>import</literal>: Import the given XML schema definition into the
current schema factory. Does nothing if the factory does not store a record of
the schema.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>export</literal>: Export the current schema factory's stored schema
definition to XML. May produce an empty file if the factory does not store a
record of the schema.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>deleteTableContents</literal>: Execute SQL to delete all rows from
all tables that OpenJPA knows about.
                </para>
            </listitem>
        </itemizedlist>
        <note>
            <para>
The schema tool manipulates tables, columns, indexes, constraints, and
sequences. It cannot create or drop the database schema objects in which the
tables reside, however. If your XML documents refer to named database schemas,
those schemas must exist.
            </para>
        </note>
        <para>
We present some examples of schema tool usage below.
        </para>
        <example id="ref_guide_schema_schematool_create">
            <title>
                Schema Creation
            </title>
            <indexterm zone="ref_guide_schema_schematool_create">
                <primary>
                    schema
                </primary>
                <secondary>
                    create with schema tool
                </secondary>
            </indexterm>
            <para>
Add the necessary schema components to the database to match the given XML
document, but don't drop any data:
            </para>
<programlisting>
java org.apache.openjpa.jdbc.schema.SchemaTool targetSchema.xml
</programlisting>
        </example>
        <example id="ref_guide_schema_schematool_script">
            <title>
                SQL Scripting
            </title>
            <para>
Repeat the same action as the first example, but this time don't change the
database. Instead, write any planned changes to a SQL script:
            </para>
<programlisting>
java org.apache.openjpa.jdbc.schema.SchemaTool -f script.sql targetSchema.xml
</programlisting>
            <para>
Write a SQL script that will re-create the current database:
            </para>
<programlisting>
java org.apache.openjpa.jdbc.schema.SchemaTool -a createDB -f script.sql
</programlisting>
        </example>
        <example id="ref_guide_schema_schematool_table_cleanup">
            <title>
                Table Cleanup
            </title>
            <indexterm zone="ref_guide_schema_schematool_table_cleanup">
                <primary>
                    schema
                </primary>
                <secondary>
                    refresh schema and delete all contents of all tables
                </secondary>
            </indexterm>
            <indexterm zone="ref_guide_schema_schematool_table_cleanup">
                <primary>
                    testing
                </primary>
                <secondary>
                    refresh schema and delete all contents of all tables
                </secondary>
            </indexterm>
            <para>
Refresh the schema and delete all contents of all tables that OpenJPA
knows about:
            </para>
<programlisting>
java org.apache.openjpa.jdbc.schema.SchemaTool -a refresh,deleteTableContents
</programlisting>
        </example>
        <example id="ref_guide_schema_schematool_drop">
            <title>
                Schema Drop
            </title>
            <para>
Drop the current database:
            </para>
<programlisting>
java org.apache.openjpa.jdbc.schema.SchemaTool -a dropDB
</programlisting>
        </example>
        <example id="ref_guide_schema_schematool_reflect">
            <title>
                Schema Reflection
            </title>
            <indexterm zone="ref_guide_schema_schematool_reflect">
                <primary>
                    schema
                </primary>
                <secondary>
                    reflection
                </secondary>
                <tertiary>
                    with schema tool
                </tertiary>
            </indexterm>
            <para>
Write an XML representation of the current schema to file <filename>schema.xml
</filename>.
            </para>
<programlisting>
java org.apache.openjpa.jdbc.schema.SchemaTool -a reflect -f schema.xml
</programlisting>
        </example>
    </section>
    <section id="ref_guide_schema_xml">
        <title>
            XML Schema Format
        </title>
        <indexterm zone="ref_guide_schema_xml">
            <primary>
                schema
            </primary>
            <secondary>
                XML representation
            </secondary>
        </indexterm>
        <para>
The <link linkend="ref_guide_schema_schematool">schema tool</link> and
<link linkend="ref_guide_schema_info_factory"> schema factories</link> all use
the same XML format to represent database schema. The Document Type Definition
(DTD) for schema information is presented below, followed by examples of schema
definitions in XML.
        </para>
<programlisting>
&lt;!ELEMENT schemas (schema)+&gt;
&lt;!ELEMENT schema (table|sequence)+&gt;
&lt;!ATTLIST schema name CDATA #IMPLIED&gt;

&lt;!ELEMENT sequence EMPTY&gt;
&lt;!ATTLIST sequence name CDATA #REQUIRED&gt;
&lt;!ATTLIST sequence initial-value CDATA #IMPLIED&gt;
&lt;!ATTLIST sequence increment CDATA #IMPLIED&gt;
&lt;!ATTLIST sequence allocate CDATA #IMPLIED&gt;

&lt;!ELEMENT table (column|index|pk|fk|unique)+&gt;
&lt;!ATTLIST table name CDATA #REQUIRED&gt;

&lt;!ELEMENT column EMPTY&gt;
&lt;!ATTLIST column name CDATA #REQUIRED&gt;
&lt;!ATTLIST column type (array | bigint | binary | bit | blob | char | clob
    | date | decimal | distinct | double | float | integer | java_object
    | longvarbinary | longvarchar | null | numeric | other | real | ref
    | smallint | struct | time | timestamp | tinyint | varbinary | varchar)
    #REQUIRED&gt;
&lt;!ATTLIST column not-null (true|false) "false"&gt;
&lt;!ATTLIST column auto-assign (true|false) "false"&gt;
&lt;!ATTLIST column default CDATA #IMPLIED&gt;
&lt;!ATTLIST column size CDATA #IMPLIED&gt;
&lt;!ATTLIST column decimal-digits CDATA #IMPLIED&gt;

&lt;!-- the type-name attribute can be used when you want OpenJPA to   --&gt;
&lt;!-- use a particular SQL type declaration when creating the     --&gt;
&lt;!-- column. It is up to you to ensure that this type is         --&gt;
&lt;!-- compatible with the JDBC type used in the type attribute.   --&gt;
&lt;!ATTLIST column type-name CDATA #IMPLIED&gt;

&lt;!-- the 'column' attribute of indexes, pks, and fks can be used --&gt;
&lt;!-- when the element has only one column (or for foreign keys,  --&gt;
&lt;!-- only one local column); in these cases the on/join child    --&gt;
&lt;!-- elements can be omitted                                     --&gt;
&lt;!ELEMENT index (on)*&gt;
&lt;!ATTLIST index name CDATA #REQUIRED&gt;
&lt;!ATTLIST index column CDATA #IMPLIED&gt;
&lt;!ATTLIST index unique (true|false) "false"&gt;

&lt;!-- the 'logical' attribute of pks should be set to 'true' if   --&gt;
&lt;!-- the primary key does not actually exist in the database,    --&gt;
&lt;!-- but the given column should be used as a primary key for    --&gt;
&lt;!-- O-R purposes                                                --&gt;
&lt;!ELEMENT pk (on)*&gt;
&lt;!ATTLIST pk name CDATA #IMPLIED&gt;
&lt;!ATTLIST pk column CDATA #IMPLIED&gt;
&lt;!ATTLIST pk logical (true|false) "false"&gt;

&lt;!ELEMENT on EMPTY&gt;
&lt;!ATTLIST on column CDATA #REQUIRED&gt;

&lt;!-- fks with a delete-action of 'none' are similar to logical   --&gt;
&lt;!-- pks; they do not actually exist in the database, but        --&gt;
&lt;!-- represent a logical relation between tables (or their       --&gt;
&lt;!-- corresponding Java classes)                                 --&gt;
&lt;!ELEMENT fk (join)*&gt;
&lt;!ATTLIST fk name CDATA #IMPLIED&gt;
&lt;!ATTLIST fk deferred (true|false) "false"&gt;
&lt;!ATTLIST fk to-table CDATA #REQUIRED&gt;
&lt;!ATTLIST fk column CDATA #IMPLIED&gt;
&lt;!ATTLIST fk delete-action (cascade|default|exception|none|null) "none"&gt;

&lt;!ELEMENT join EMPTY&gt;
&lt;!ATTLIST join column CDATA #REQUIRED&gt;
&lt;!ATTLIST join to-column CDATA #REQUIRED&gt;
&lt;!ATTLIST join value CDATA #IMPLIED&gt;

&lt;!-- unique constraint --&gt;
&lt;!ELEMENT unique (on)*&gt;
&lt;!ATTLIST unique name CDATA #IMPLIED&gt;
&lt;!ATTLIST unique column CDATA #IMPLIED&gt;
&lt;!ATTLIST unique deferred (true|false) "false"&gt;
</programlisting>
        <example id="ref_guide_schema_xml_basic">
            <title>
                Basic Schema
            </title>
            <para>
A very basic schema definition.
            </para>
<programlisting>
&lt;schemas&gt;
    &lt;schema&gt;
        &lt;sequence name="S_ARTS"/&gt;
        &lt;table name="ARTICLE"&gt;
            &lt;column name="TITLE" type="varchar" size="255" not-null="true"/&gt;
            &lt;column name="AUTHOR_FNAME" type="varchar" size="28"&gt;
            &lt;column name="AUTHOR_LNAME" type="varchar" size="28"&gt;
            &lt;column name="CONTENT" type="clob"&gt;
        &lt;/table&gt;
        &lt;table name="AUTHOR"&gt;
            &lt;column name="FIRST_NAME" type="varchar" size="28" not-null="true"&gt;
            &lt;column name="LAST_NAME" type="varchar" size="28" not-null="true"&gt;
        &lt;/table&gt;
    &lt;/schema&gt;
&lt;/schemas&gt;
</programlisting>
        </example>
        <example id="ref_guide_schema_xml_full">
            <title>
                Full Schema
            </title>
            <para>
Expansion of the above schema with primary keys, constraints, and indexes, some
of which span multiple columns.
            </para>
<programlisting>
&lt;schemas&gt;
    &lt;schema&gt;
        &lt;sequence name="S_ARTS"/&gt;
        &lt;table name="ARTICLE"&gt;
            &lt;column name="TITLE" type="varchar" size="255" not-null="true"/&gt;
            &lt;column name="AUTHOR_FNAME" type="varchar" size="28"&gt;
            &lt;column name="AUTHOR_LNAME" type="varchar" size="28"&gt;
            &lt;column name="CONTENT" type="clob"&gt;
            &lt;pk column="TITLE"/&gt;
            &lt;fk to-table="AUTHOR" delete-action="exception"&gt;
                &lt;join column="AUTHOR_FNAME" to-column="FIRST_NAME"/&gt;
                &lt;join column="AUTHOR_LNAME" to-column="LAST_NAME"/&gt;
            &lt;/fk&gt;
            &lt;index name="ARTICLE_AUTHOR"&gt;
                &lt;on column="AUTHOR_FNAME"/&gt;
                &lt;on column="AUTHOR_LNAME"/&gt;
            &lt;/index&gt;
        &lt;/table&gt;
        &lt;table name="AUTHOR"&gt;
            &lt;column name="FIRST_NAME" type="varchar" size="28" not-null="true"&gt;
            &lt;column name="LAST_NAME" type="varchar" size="28" not-null="true"&gt;
            &lt;pk&gt;
                &lt;on column="FIRST_NAME"/&gt;
                &lt;on column="LAST_NAME"/&gt;
            &lt;/pk&gt;
        &lt;/table&gt;
    &lt;/schema&gt;
&lt;/schemas&gt;
</programlisting>
        </example>
    </section>
</chapter>

