<?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_conf">
    <title>
        Configuration
    </title>
    <indexterm>
        <primary>
            configuration
        </primary>
    </indexterm>
    <section id="ref_guide_conf_intro">
        <title>
            Introduction
        </title>
        <para>
This chapter describes the OpenJPA configuration framework. It concludes with
descriptions of all the configuration properties recognized by OpenJPA. You may
want to browse these properties now, but it is not necessary. Most of them will
be referenced later in the documentation as we explain the various features they
apply to.
        </para>
    </section>
    <section id="ref_guide_conf_specify">
        <title>
            Runtime Configuration
        </title>
        <indexterm zone="ref_guide_conf_specify">
            <primary>
                configuration
            </primary>
            <secondary>
                runtime
            </secondary>
        </indexterm>
        <para>
The OpenJPA runtime includes a comprehensive system of configuration defaults
and overrides:
        </para>
        <itemizedlist>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        openjpa.xml
                    </primary>
                </indexterm>
OpenJPA first looks for an optional <filename>openjpa.xml</filename> resource.
OpenJPA searches for this resource in each top-level directory of your <literal>
CLASSPATH</literal>. OpenJPA will also find the resource if you place it within
a <filename>META-INF</filename> directory in any top-level directory of the
<literal>CLASSPATH</literal>. The <filename>openjpa.xml</filename> resource
contains property settings in <link linkend="jpa_overview_persistence_xml">
JPA's XML format</link>.
                </para>
            </listitem>
            <listitem>
                <para>
You can customize the name or location of the above resource by specifying the
correct resource path in the <literal>openjpa.properties</literal> System
property.
                </para>
            </listitem>
            <listitem>
                <para>
You can override any value defined in the above resource by setting the System
property of the same name to the desired value.
                </para>
            </listitem>
            <listitem>
                <para>
                <indexterm>
                    <primary>
                        Persistence
                    </primary>
                    <secondary>
                        createEntityManagerFactory
                    </secondary>
                </indexterm>
In JPA, the values in the standard <filename> META-INF/persistence.xml
</filename> bootstrapping file used by the
<link linkend="jpa_overview_persistence"><classname>Persistence</classname>
</link> class at runtime override the values in the above resource, as well as
any System property settings. The <classname>Map</classname> passed to
<methodname>Persistence.createEntityManagerFactory</methodname> at runtime also
overrides previous settings, including properties defined in <filename>
persistence.xml</filename>.
                </para>
            </listitem>
            <listitem>
                <para>
In JPA, The <classname>Map</classname> passed to the methods defined in the
<classname>Query</classname> and <classname>EntityManager</classname> interfaces
at runtime also overrides previous settings, including properties defined in
<filename>persistence.xml</filename>. The <classname>Map</classname> is in
effect only during the method invocation.
                </para>
            </listitem>
            <listitem>
                <para>
When using JCA deployment the <literal>config-property</literal> values in your
<filename>ra.xml</filename> file override other settings.
                </para>
            </listitem>
            <listitem>
                <para>
All OpenJPA command-line tools accept flags that allow you to specify the
configuration resource to use, and to override any property.
<xref linkend="ref_guide_conf_devtools"/> describes these flags.
                </para>
            </listitem>
        </itemizedlist>
        <note>
            <para>
Internally, the OpenJPA runtime environment and development
tools manipulate property settings through a general
<ulink url="../../apidocs/org/apache/openjpa/lib/conf/Configuration.html">
<classname>Configuration</classname></ulink> interface, and in particular its
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html">
<classname>OpenJPAConfiguration</classname></ulink> and
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html">
<classname>JDBCConfiguration</classname></ulink> subclasses. For advanced
customization, OpenJPA's extended runtime interfaces and its development tools
allow you to access these interfaces directly. See the <ulink url="../../apidocs/">
Javadoc</ulink> for details.
            </para>
        </note>
    </section>
    <section id="ref_guide_conf_devtools">
        <title>
            Command Line Configuration
        </title>
        <indexterm zone="ref_guide_conf_devtools">
            <primary>
                configuration
            </primary>
            <secondary>
                command line
            </secondary>
        </indexterm>
        <para>
OpenJPA development tools share the same set of configuration defaults and
overrides as the runtime system. They also allow you to specify property values
on the command line:
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>-properties/-p &lt;configuration file or resource&gt;</literal>: Use
the <literal>-properties</literal> flag, or its shorter <literal>-p</literal>
form, to specify a configuration file to use. Note that OpenJPA always searches
the default file locations described above, so this flag is only needed when you
do not have a default resource in place, or when you wish to override the
defaults. The given value can be the path to a file, or the resource name of a
file somewhere in the <literal>CLASSPATH</literal>. OpenJPA will search the
given location as well as the location prefixed by <filename> META-INF/
</filename>. Thus, to point an OpenJPA tool at <filename>
META-INF/my-persistence.xml</filename>, you can use:
                </para>
<programlisting>
&lt;tool&gt; -p my-persistence.xml
</programlisting>
                <para>
If you want to run a tool against just one particular persistence unit in
a configuration file, you can do so by specifying an anchor along with the
resource. If you do not specify an anchor, the tools will run against all
the persistence units defined within the specified resource, or the default
resource if none is specified. If the persistence unit is defined within
the default resource location, then you can just specify the raw anchor itself:
                </para>
<programlisting>
&lt;tool&gt; -p my-persistence.xml#sales-persistence-unit
&lt;tool&gt; -p #invoice-persistence-unit
</programlisting>
            </listitem>
            <listitem>
                <para>
<literal>-&lt;property name&gt; &lt;property value&gt;</literal>: Any
configuration property that you can specify in a configuration file can be
overridden with a command line flag. The flag name is always the last token of
the corresponding property name, with the first letter in either upper or lower
case. For example, to override the <literal>openjpa.ConnectionUserName</literal>
property, you could pass the <literal>-connectionUserName &lt;value&gt;
</literal> flag to any tool. Values set this way override both the values in the
configuration file and values set via System properties.
                </para>
            </listitem>
        </itemizedlist>
        <section id="ref_guide_conf_devtools_format">
            <title>
                Code Formatting
            </title>
            <indexterm zone="ref_guide_conf_devtools_format">
                <primary>
                    code formatting
                </primary>
            </indexterm>
            <para>
Some OpenJPA development tools generate Java code. These tools share a common
set of command-line flags for formatting their output to match your coding
style. All code formatting flags can begin with either the <literal>codeFormat
</literal> or <literal>cf</literal> prefix.
            </para>
            <itemizedlist>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.tabSpaces &lt;spaces&gt;</literal>: The number of
spaces that make up a tab, or 0 to use tab characters. Defaults to using tab
characters.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.spaceBeforeParen &lt;true/t | false/f&gt;</literal>:
Whether or not to place a space before opening parentheses on method calls, if
statements, loops, etc. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.spaceInParen &lt;true/t | false/f&gt;</literal>:
Whether or not to place a space within parentheses; i.e. <literal>method( arg)
</literal>. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.braceOnSameLine &lt;true/t | false/f&gt;</literal>:
Whether or not to place opening braces on the same line as the declaration that
begins the code block, or on the next line. Defaults to <literal>true</literal>
.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.braceAtSameTabLevel &lt;true/t | false/f&gt;</literal>
: When the <literal>braceOnSameLine</literal> option is disabled, you can choose
whether to place the brace at the same tab level of the contained code. Defaults
to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.scoreBeforeFieldName &lt;true/t | false/f&gt;
</literal>: Whether to prefix an underscore to names of private member
variables. Defaults to <literal>false</literal>.
                    </para>
                </listitem>
                <listitem>
                    <para>
<literal>-codeFormat./-cf.linesBetweenSections &lt;lines&gt;</literal>: The
number of lines to skip between sections of code. Defaults to 1.
                    </para>
                </listitem>
            </itemizedlist>
            <example id="ref_guide_conf_devtools_format_ex">
                <title>
                    Code Formatting with the Application Id Tool
                </title>
<programlisting>
java org.apache.openjpa.enhance.ApplicationIdTool -cf.spaceBeforeParen true -cf.tabSpaces 4
</programlisting>
            </example>
        </section>
    </section>
    <section id="ref_guide_conf_plugins">
        <title>
            Plugin Configuration
        </title>
        <indexterm zone="ref_guide_conf_plugins">
            <primary>
                configuration
            </primary>
            <secondary>
                plugins
            </secondary>
        </indexterm>
        <indexterm>
            <primary>
                plugins
            </primary>
            <see>
                configuration
            </see>
        </indexterm>
        <para>
Because OpenJPA is a highly customizable environment, many configuration
properties relate to the creation and configuration of system plugins. Plugin
properties have a syntax very similar to that of Java annotations. They allow
you to specify both what class to use for the plugin and how to configure the
public fields or bean properties of the instantiated plugin instance. The
easiest way to describe the plugin syntax is by example:
        </para>
        <para>
OpenJPA has a pluggable L2 caching mechanism that is controlled by the <literal>
openjpa.DataCache</literal> configuration property. Suppose that you have
created a new class, <classname>com.xyz.MyDataCache</classname>, that you want
OpenJPA to use for caching. You've made instances of <literal>MyDataCache
</literal> configurable via two methods, <methodname>setCacheSize(int size)
</methodname> and <methodname>setRemoteHost(String host)</methodname>. The
sample below shows how you would tell OpenJPA to use an instance of your custom
plugin with a max size of 1000 and a remote host of <literal>cacheserver
</literal>.
        </para>
<programlisting>
&lt;property name="openjpa.DataCache"
    value="com.xyz.MyDataCache(CacheSize=1000, RemoteHost=cacheserver)"/&gt;
</programlisting>
        <para>
As you can see, plugin properties take a class name, followed by a
comma-separated list of values for the plugin's public fields or bean properties
in parentheses. OpenJPA will match each named property to a field or setter
method in the instantiated plugin instance, and set the field or invoke the
method with the given value (after converting the value to the right type, of
course). The first letter of the property names can be in either upper or lower
case. The following would also have been valid:
        </para>
<programlisting>
com.xyz.MyDataCache(cacheSize=1000, remoteHost=cacheserver)
</programlisting>
        <para>
If you do not need to pass any property settings to a plugin, you can just name
the class to use:
        </para>
<programlisting>
com.xyz.MyDataCache
</programlisting>
        <para>
Similarly, if the plugin has a default class that you do not want to change, you
can simply specify a list of property settings, without a class name. For
example, OpenJPA's query cache companion to the data cache has a default
implementation suitable to most users, but you still might want to change the
query cache's size. It has a <literal>CacheSize</literal> property for this
purpose:
        </para>
<programlisting>
CacheSize=1000
</programlisting>
        <para>
Finally, many of OpenJPA's built-in options for plugins have short alias names
that you can use in place of the full class name. The data cache property, for
example, has an available alias of <literal>true</literal> for the standard
cache implementation. The property value simply becomes:
        </para>
<programlisting>
true
</programlisting>
        <para>
The standard cache implementation class also has a <literal>CacheSize</literal>
property, so to use the standard implementation and configure the size, specify:
        </para>
<programlisting>
true(CacheSize=1000)
</programlisting>

        <para>
The remainder of this chapter reviews the set of configuration properties
OpenJPA recognizes.
        </para>
    </section>
    <section id="ref_guide_conf_openjpa">
        <title>
            OpenJPA Properties
        </title>
        <indexterm zone="ref_guide_conf_openjpa">
            <primary>
                configuration
            </primary>
            <secondary>
                of OpenJPA properties
            </secondary>
        </indexterm>
        <para>
OpenJPA defines many configuration properties. Most of these properties are
provided for advanced users who wish to customize OpenJPA's behavior; the
majority of developers can omit them. The following properties apply to any
OpenJPA back-end, though the given descriptions are tailored to OpenJPA's
default JDBC store.
        </para>

        <para>
A few of the properties recognized by OpenJPA have been standardized in JPA 2.0
specification using equivalent names. These properties can be specified either
by the JPA standard key or equivalent OpenJPA key. Specifying the same key once
as JPA standard key and again as equivalent OpenJPA key in the same configuration,
however, is not allowed. The following table lists these standard JPA properties
and their OpenJPA equivalent.
        </para>
    <table tocentry="1">
        <title>
            Standard JPA Properties and OpenJPA equivalents
        </title>
        <tgroup rowsep="1" colsep="8" align="left" cols="2">
            <colspec colname="StandardJPA"/>
            <colspec colname="OpenJPAEquivalent"/>
            <thead>
                <row>
                    <entry colname="StandardJPA">Standard JPA 2.0</entry>
                    <entry colname="OpenJPAEquivalent">OpenJPA Equivalent</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry colname="StandardJPA">javax.persistence.jdbc.driver</entry>
                    <entry colname="OpenJPAEquivalent">openjpa.ConnectionDriverName</entry>
                </row>
                <row>
                    <entry colname="StandardJPA">javax.persistence.jdbc.url</entry>
                    <entry colname="OpenJPAEquivalent">openjpa.ConnectionURL</entry>
                </row>
                <row>
                    <entry colname="StandardJPA">javax.persistence.jdbc.user</entry>
                    <entry colname="OpenJPAEquivalent">openjpa.ConnectionUserName</entry>
                </row>
                <row>
                    <entry colname="StandardJPA">javax.persistence.jdbc.password</entry>
                    <entry colname="OpenJPAEquivalent">openjpa.ConnectionPassword</entry>
                </row>
           </tbody>
        </tgroup>
    </table>



        <!--
        <section id="openjpa.AggregateListeners">
            <title>
                openjpa.AggregateListeners
            </title>
            <indexterm zone="openjpa.AggregateListeners">
                <primary>
                    AggregateListeners
                </primary>
            </indexterm>
            <indexterm zone="openjpa.AggregateListeners">
                <primary>
                    Query
                </primary>
                <secondary>
                    AggregateListeners
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.AggregateListeners</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getAggregateListeners()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getAggregateListeners
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
AggregateListeners</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of plugin
strings (see <xref linkend="ref_guide_conf_plugins"/>) describing custom
<ulink url="../../apidocs/org/apache/openjpa/jdbc/kernel/exps/JDBCAggregateListener.html">
<classname> org.apache.openjpa.jdbc.kernel.exps.JDBCAggregateListener
</classname></ulink>s to make available to all queries, in addition to the
standard set of listeners. See <xref linkend="ref_guide_enterprise_queryext"/>
 for details on aggregate listeners.
            </para>
        </section>
        -->
        <section id="openjpa.AutoClear">
            <title>
                openjpa.AutoClear
            </title>
            <indexterm zone="openjpa.AutoClear">
                <primary>
                    AutoClear
                </primary>
            </indexterm>
            <indexterm zone="openjpa.AutoClear">
                <primary>
                    transactions
                </primary>
                <secondary>
                    AutoClear
                </secondary>
                <tertiary>
                    AutoClear
                </tertiary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.AutoClear
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getAutoClear()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getAutoClear
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
AutoClear</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>datastore</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>datastore</literal>,
<literal>all</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> When to automatically clear
instance state: on entering a datastore transaction, or on entering any
transaction.
            </para>
        </section>
        <section id="openjpa.AutoDetach">
            <title>
                openjpa.AutoDetach
            </title>
            <indexterm zone="openjpa.AutoDetach">
                <primary>
                    AutoDetach
                </primary>
            </indexterm>
            <indexterm zone="openjpa.AutoDetach">
                <primary>
                    detach
                </primary>
                <secondary>
                    AutoDetach
                </secondary>
                <tertiary>
                    AutoDetach
                </tertiary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.AutoDetach
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getAutoDetach()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getAutoDetach
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
AutoDetach</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> - null
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>close</literal>,
<literal>commit</literal>, <literal>nontx-read</literal>, <literal>rollback</literal>, <literal>none</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of events
when managed instances will be automatically detached. When using the OpenJPA EntityManager this defaults to
<literal>close</literal>, and <literal>rollback</literal> per the JPA spec. If you need to change this setting, you
need to set it directly on an instantiated EntityManager.
            </para>

            <para>
<literal>none</literal> option is exclusive. It can not be specified with any other option.
<literal>none</literal> option implies that managed objects will not be detached from the persistence context,
the second-class object fields such as collections or date will <emphasis>not</emphasis> be proxied unlike normal
circumstances. This option is relevant for specific use cases where the user application would not refer to the
managed objects after the transaction and/or the context ends e.g. typical batch insertion scenario.
            </para>

        </section>
        <section id="openjpa.BrokerFactory">
            <title>
                openjpa.BrokerFactory
            </title>
            <indexterm zone="openjpa.BrokerFactory">
                <primary>
                    BrokerFactory
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.BrokerFactory
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getBrokerFactory()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getBrokerFactory
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
BrokerFactory</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>jdbc</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>jdbc</literal>,
<literal>abstractstore</literal>, <literal>remote</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/kernel/BrokerFactory.html">
<classname>org.apache.openjpa.kernel.BrokerFactory</classname></ulink> type to
use.
            </para>
        </section>
        <section id="openjpa.BrokerImpl">
            <title>
                openjpa.BrokerImpl
            </title>
            <indexterm zone="openjpa.BrokerImpl">
                <primary>
                    BrokerImpl
                </primary>
            </indexterm>
            <indexterm zone="openjpa.BrokerImpl">
                <primary>
                    Broker
                </primary>
                <secondary>
                    BrokerImpl
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.BrokerImpl
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getBrokerImpl()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getBrokerImpl
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
BrokerImpl</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>default</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/kernel/Broker.html"><classname>
org.apache.openjpa.kernel.Broker</classname></ulink> type to use at runtime. See
<xref linkend="ref_guide_runtime_broker_extension"/> on for details.
            </para>
        </section>

<section id="openjpa.Callbacks">
            <title>openjpa.Callbacks</title>
            <indexterm zone="openjpa.Callbacks">
                <primary>Callbacks</primary>
            </indexterm>
            <indexterm>
                <primary>Callbacks</primary>
                <see>Callbacks</see>
            </indexterm>
  <para>
     <emphasis role="bold">Property name: </emphasis><literal>openjpa.Callbacks</literal>
  </para>
  <para>
     <emphasis role="bold">Configuration API:</emphasis>
     <ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getCallbackOptionsInstance()">
     <methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getCallbackOptionsInstance</methodname></ulink>
  </para>
  <para>
     <emphasis role="bold">Resource adaptor config-property: </emphasis><literal>Callbacks</literal>
  </para>
  <para>
     <emphasis role="bold">Default: </emphasis><literal>default</literal>
  </para>
  <para>
     <emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) to fine tune some of the configurable
properties related to callbacks. The plug-in supports two boolean properties:
   </para>
   <itemizedlist>
   	<listitem>
   		<para><literal>PostPersistCallbackImmediate</literal>: whether the
   		post-persist callback is invoked as soon as a new instance
        is managed. The default is <literal>false</literal>, implies that
        the post-persist callback is invoked after the instance been committed
        or flushed to the datastore.
        </para>
   	</listitem>
   	<listitem>
   	    <para><literal>AllowsMultipleMethodsForSameCallback</literal>: whether
   	    multiple methods of the same class can handle the same callback event.
   	    Defaults to <literal>false</literal>.
   	    </para>
   	</listitem>
   </itemizedlist>
</section>

        <section id="openjpa.ClassResolver">
            <title>
                openjpa.ClassResolver
            </title>
            <indexterm zone="openjpa.ClassResolver">
                <primary>
                    ClassResolver
                </primary>
            </indexterm>
            <indexterm>
                <primary>
                    class loading
                </primary>
                <see>
                    ClassResolver
                </see>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.ClassResolver
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getClassResolver()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getClassResolver
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ClassResolver</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>default</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/util/ClassResolver.html"><classname>
org.apache.openjpa.util.ClassResolver</classname></ulink> implementation to use
for class name resolution. You may wish to plug in your own resolver if you have
special classloading needs.
            </para>
        </section>
        <section id="openjpa.Compatibility">
            <title>
                openjpa.Compatibility
            </title>
            <indexterm zone="openjpa.Compatibility">
                <primary>
                    Compatibility
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Compatibility">
                <primary>
                    backwards compatibility
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Compatibility
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getCompatibility()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getCompatibility
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Compatibility</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Encapsulates options to mimic the
behavior of previous OpenJPA releases.
            </para>
        </section>
        <section id="openjpa.ConnectionDriverName">
            <title>
                openjpa.ConnectionDriverName
            </title>
            <indexterm zone="openjpa.ConnectionDriverName">
                <primary>
                    ConnectionDriverName
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionDriverName">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionDriverName
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionDriverName</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionDriverName()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionDriverName
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionDriverName</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The full class name of either the
JDBC <classname>java.sql.Driver</classname>, or a <classname>
javax.sql.DataSource</classname> implementation to use to connect to the
database. See <xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.Connection2DriverName">
            <title>
                openjpa.Connection2DriverName
            </title>
            <indexterm zone="openjpa.Connection2DriverName">
                <primary>
                    Connection2DriverName
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Connection2DriverName">
                <primary>
                    connections
                </primary>
                <secondary>
                    Connection2DriverName
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.Connection2DriverName</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnection2DriverName()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnection2DriverName
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Connection2DriverName</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> This property is equivalent to the
<literal>openjpa.ConnectionDriverName</literal> property described in
<xref linkend="openjpa.ConnectionDriverName"/>, but applies to the
alternate connection factory used for unmanaged connections. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactory">
            <title>
                openjpa.ConnectionFactory
            </title>
            <indexterm zone="openjpa.ConnectionFactory">
                <primary>
                    ConnectionFactory
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactory">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactory
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactory</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactory()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactory
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactory</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A <classname>javax.sql.DataSource
</classname> to use to connect to the database. See
<xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactory2">
            <title>
                openjpa.ConnectionFactory2
            </title>
            <indexterm zone="openjpa.ConnectionFactory2">
                <primary>
                    ConnectionFactory2
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactory2">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactory2
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactory2</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactory2()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactory2
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactory2</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> An unmanaged <classname>
javax.sql.DataSource</classname> to use to connect to the database. See
<xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactoryName">
            <title>
                openjpa.ConnectionFactoryName
            </title>
            <indexterm zone="openjpa.ConnectionFactoryName">
                <primary>
                    ConnectionFactoryName
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactoryName">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactoryName
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactoryName</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactoryName()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactoryName
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactoryName</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The JNDI location of a <classname>
javax.sql.DataSource</classname> to use to connect to the database. See
<xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactory2Name">
            <title>
                openjpa.ConnectionFactory2Name
            </title>
            <indexterm zone="openjpa.ConnectionFactory2Name">
                <primary>
                    ConnectionFactory2Name
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactory2Name">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactory2Name
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactory2Name</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactory2Name()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactory2Name
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactory2Name</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The JNDI location of an unmanaged
<classname>javax.sql.DataSource</classname> to use to connect to the database.
See <xref linkend="ref_guide_enterprise_xa"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactoryMode">
            <title>
                openjpa.ConnectionFactoryMode
            </title>
            <indexterm zone="openjpa.ConnectionFactoryMode">
                <primary>
                    ConnectionFactoryMode
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactoryMode">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactoryMode
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactoryMode</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactoryMode()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactoryMode
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactoryMode</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>local</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>local</literal>,
<literal>managed</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The connection factory mode to use
when integrating with the application server's managed transactions. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactoryProperties">
            <title>
                openjpa.ConnectionFactoryProperties
            </title>
            <indexterm zone="openjpa.ConnectionFactoryProperties">
                <primary>
                    ConnectionFactoryProperties
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactoryProperties">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactoryProperties
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactoryProperties</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactoryProperties()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactoryProperties
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactoryProperties</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) listing properties for
configuration of the datasource in use. See the
<xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionFactory2Properties">
            <title>
                openjpa.ConnectionFactory2Properties
            </title>
            <indexterm zone="openjpa.ConnectionFactory2Properties">
                <primary>
                    ConnectionFactory2Properties
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionFactory2Properties">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionFactory2Properties
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionFactory2Properties</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionFactory2Properties()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionFactory2Properties
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionFactory2Properties</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> This property is equivalent to the
<literal>openjpa.ConnectionFactoryProperties</literal> property described in
<xref linkend="openjpa.ConnectionFactoryProperties"/>, but applies to the
alternate connection factory used for unmanaged connections. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionPassword">
            <title>
                openjpa.ConnectionPassword
            </title>
            <indexterm zone="openjpa.ConnectionPassword">
                <primary>
                    ConnectionPassword
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionPassword">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionPassword
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionPassword</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionPassword()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionPassword
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionPassword</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The password for the user
specified in the <literal>ConnectionUserName</literal> property. See
<xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.Connection2Password">
            <title>
                openjpa.Connection2Password
            </title>
            <indexterm zone="openjpa.Connection2Password">
                <primary>
                    Connection2Password
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Connection2Password">
                <primary>
                    connections
                </primary>
                <secondary>
                    Connection2Password
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.Connection2Password</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnection2Password()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnection2Password
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Connection2Password</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> This property is equivalent to the
<literal>openjpa.ConnectionPassword</literal> property described in
<xref linkend="openjpa.ConnectionPassword"/>, but applies to the
alternate connection factory used for unmanaged connections. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionProperties">
            <title>
                openjpa.ConnectionProperties
            </title>
            <indexterm zone="openjpa.ConnectionProperties">
                <primary>
                    ConnectionProperties
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionProperties">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionProperties
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionProperties</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionProperties()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionProperties
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionProperties</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) listing properties to configure
the driver listed in the <literal>ConnectionDriverName</literal> property
described below. See <xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.Connection2Properties">
            <title>
                openjpa.Connection2Properties
            </title>
            <indexterm zone="openjpa.Connection2Properties">
                <primary>
                    Connection2Properties
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Connection2Properties">
                <primary>
                    connections
                </primary>
                <secondary>
                    Connection2Properties
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.Connection2Properties</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnection2Properties()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnection2Properties
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Connection2Properties</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> This property is equivalent to the
<literal>openjpa.ConnectionProperties</literal> property described in
<xref linkend="openjpa.ConnectionProperties"/>, but applies to the
alternate connection factory used for unmanaged connections. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionURL">
            <title>
                openjpa.ConnectionURL
            </title>
            <indexterm zone="openjpa.ConnectionURL">
                <primary>
                    ConnectionURL
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionURL">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionURL
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.ConnectionURL
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionURL()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionURL
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionURL</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The JDBC URL for the database. See
<xref linkend="ref_guide_dbsetup"/> for details.
            </para>
        </section>
        <section id="openjpa.Connection2URL">
            <title>
                openjpa.Connection2URL
            </title>
            <indexterm zone="openjpa.Connection2URL">
                <primary>
                    Connection2URL
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Connection2URL">
                <primary>
                    connections
                </primary>
                <secondary>
                    Connection2URL
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Connection2URL
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnection2URL()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnection2URL
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Connection2URL</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> This property is equivalent to the
<literal>openjpa.ConnectionURL</literal> property described in
<xref linkend="openjpa.ConnectionURL"/>, but applies to the alternate
connection factory used for unmanaged connections. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionUserName">
            <title>
                openjpa.ConnectionUserName
            </title>
            <indexterm zone="openjpa.ConnectionUserName">
                <primary>
                    ConnectionUserName
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionUserName">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionUserName
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionUserName</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionUserName()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionUserName
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionUserName</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The user name to use when
connecting to the database. See the <xref linkend="ref_guide_dbsetup"/>
for details.
            </para>
        </section>
        <section id="openjpa.Connection2UserName">
            <title>
                openjpa.Connection2UserName
            </title>
            <indexterm zone="openjpa.Connection2UserName">
                <primary>
                    Connection2UserName
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Connection2UserName">
                <primary>
                    connections
                </primary>
                <secondary>
                    Connection2UserName
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.Connection2UserName</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnection2UserName()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getConnection2UserName
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Connection2UserName</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> This property is equivalent to the
<literal>openjpa.ConnectionUserName</literal> property described in
<xref linkend="openjpa.ConnectionUserName"/>, but applies to the
alternate connection factory used for unmanaged connections. See
<xref linkend="ref_guide_dbsetup_thirdparty_enlist"/> for details.
            </para>
        </section>
        <section id="openjpa.ConnectionRetainMode">
            <title>
                openjpa.ConnectionRetainMode
            </title>
            <indexterm zone="openjpa.ConnectionRetainMode">
                <primary>
                    ConnectionRetainMode
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ConnectionRetainMode">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionRetainMode
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.ConnectionRetainMode</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getConnectionRetainMode()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getConnectionRetainMode
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionRetainMode</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>on-demand</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Controls how OpenJPA uses
datastore connections. This property can also be specified for individual
sessions. See <xref linkend="ref_guide_dbsetup_retain"/> for details.
            </para>
        </section>
        <section id="openjpa.DataCache">
            <title>
                openjpa.DataCache
            </title>
            <indexterm zone="openjpa.DataCache">
                <primary>
                    DataCache
                </primary>
            </indexterm>
            <indexterm zone="openjpa.DataCache">
                <primary>
                    caching
                </primary>
                <secondary>
                    DataCache
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.DataCache
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getDataCache()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getDataCache
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DataCache</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin list string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/datacache/DataCache.html"><classname>
org.apache.openjpa.datacache.DataCache</classname></ulink>s to use for data
caching. See <xref linkend="ref_guide_cache_conf"/> for details.
            </para>
        </section>
        <section id="openjpa.DataCacheManager">
            <title>
                openjpa.DataCacheManager
            </title>
            <indexterm zone="openjpa.DataCacheManager">
                <primary>
                    DataCacheManager
                </primary>
            </indexterm>
            <indexterm zone="openjpa.DataCacheManager">
                <primary>
                    caching
                </primary>
                <secondary>
                    DataCacheManager
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.DataCacheManager</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getDataCacheManager()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getDataCacheManager
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DataCacheManager</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>default</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/datacache/DataCacheManager.html">
<classname>openjpa.datacache.DataCacheManager</classname></ulink> that manages
the system data caches. See <xref linkend="ref_guide_cache"/> for details
on data caching.
            </para>
        </section>
        <section id="openjpa.DataCacheMode">
            <title>
                openjpa.DataCacheMode
            </title>
            <indexterm zone="openjpa.DataCacheMode">
                <primary>
                    DataCacheMode
                </primary>
            </indexterm>
            <indexterm zone="openjpa.DataCacheMode">
                <primary>
                    caching
                </primary>
                <secondary>
                    DataCacheTimeout
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.DataCacheMode</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getDataCacheMode()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getDataCacheMode
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DataCacheMode</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>DataCacheMode.UNSPECIFIED (see javadoc for details)</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis>Determines which entities will be included in the DataCache. May be any of the values defined in <ulink url="../../apidocs/org/apache/openjpa/datacache/DataCacheMode.html"/>.
            </para>
        </section>

        <section id="openjpa.DataCacheTimeout">
            <title>
                openjpa.DataCacheTimeout
            </title>
            <indexterm zone="openjpa.DataCacheTimeout">
                <primary>
                    DataCacheTimeout
                </primary>
            </indexterm>
            <indexterm zone="openjpa.DataCacheTimeout">
                <primary>
                    caching
                </primary>
                <secondary>
                    DataCacheTimeout
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.DataCacheTimeout</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getDataCacheTimeout()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getDataCacheTimeout
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DataCacheTimeout</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>-1</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The number of milliseconds that
data in the data cache is valid. Set this to -1 to indicate that data should not
expire from the cache. This property can also be specified for individual
classes. See <xref linkend="ref_guide_cache_conf"/> for details.
            </para>
        </section>

        <section id="openjpa.DetachState">
            <title>
                openjpa.DetachState
            </title>
            <indexterm zone="openjpa.AutoDetach">
                <primary>
                    DetachState
                </primary>
            </indexterm>
            <indexterm zone="openjpa.AutoDetach">
                <primary>
                    detach
                </primary>
                <secondary>
                    DetachState
                </secondary>
                <tertiary>
                    DetachState
                </tertiary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.DetachState
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfigurationImpl.html#getDetachState()">
<methodname>org.apache.openjpa.conf.OpenJPAConfigurationImpl.getDetachState
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DetachState</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>loaded</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>loaded</literal>,
<literal>fetch-groups</literal>, <literal>all</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Determines which fields are part
of the detached graph and related options. For more details, see
<xref linkend="ref_guide_detach_graph"/>.
            </para>
        </section>
        <section id="openjpa.DynamicDataStructs">
            <title>
                openjpa.DynamicDataStructs
            </title>
            <indexterm zone="openjpa.DynamicDataStructs">
                <primary>
                    DynamicDataStructs
                </primary>
            </indexterm>
            <indexterm zone="openjpa.DynamicDataStructs">
                <primary>
                    caching
                </primary>
                <secondary>
                    DynamicDataStructs
                </secondary>
            </indexterm>
            <indexterm zone="openjpa.DynamicDataStructs">
                <primary>
                    remote
                </primary>
                <secondary>
                    DynamicDataStructs
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.DynamicDataStructs</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getDynamicDataStructs()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getDynamicDataStructs
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DynamicDataStructs</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether to dynamically generate
customized structs to hold persistent data. Both the OpenJPA data cache and the
remote framework rely on data structs to cache and transfer persistent state.
With dynamic structs, OpenJPA can customize data storage for each class,
eliminating the need to generate primitive wrapper objects. This saves memory
and speeds up certain runtime operations. The price is a longer warm-up time for
the application - generating and loading custom classes into the JVM takes time.
Therefore, only set this property to <literal>true</literal> if you have a
long-running application where the initial cost of class generation is offset by
memory and speed optimization over time.
            </para>
        </section>
        <section id="openjpa.DynamicEnhancementAgent">
            <title>openjpa.DynamicEnhancementAgent</title>
            <para>
                <emphasis role="bold">Property name: </emphasis>
                <literal>openjpa.DynamicEnhancementAgent</literal>
            </para>
            <para>
                 <emphasis role="bold">Configuration API: </emphasis>
                 <ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getDynamicEnhancementAgent()">org.apache.openjpa.conf.OpenJPAConfiguration.getDynamicEnhancementAgent</ulink>
            </para>
            <para>
                <emphasis role="bold">Resource adaptor config property:</emphasis>
                DynamicEnhancementAgent
            </para>
            <para>
                <emphasis role="bold">Default: </emphasis>
                <literal>true</literal>

            </para>
            <para>
                <emphasis role="bold">Description:</emphasis>
                The DynamicEnhancementAgent property controls whether or not
                OpenJPA will attempt to dynamically load the PCEnhancer
                javaagent.
            </para>
            <para>
                See the reference guide for more information
                <xref linkend="ref_guide_pc_enhance_dynamic"/>
            </para>
        </section>
        <section id="openjpa.FetchBatchSize">
            <title>
                openjpa.FetchBatchSize
            </title>
            <indexterm zone="openjpa.FetchBatchSize">
                <primary>
                    FetchBatchSize
                </primary>
            </indexterm>
            <indexterm zone="openjpa.FetchBatchSize">
                <primary>
                    large result sets
                </primary>
                <secondary>
                    FetchBatchSize
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.FetchBatchSize
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getFetchBatchSize()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getFetchBatchSize
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
FetchBatchSize</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>-1</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The number of rows to fetch at
once when scrolling through a result set. The fetch size can also be set at
runtime. See <xref linkend="ref_guide_dbsetup_lrs"/> for details.
            </para>
        </section>
<!-- start -->
<section id="openjpa.EncryptionProvider">
            <title>
                openjpa.EncryptionProvider
            </title>
            <indexterm zone="openjpa.EncryptionProvider">
                <primary>
                    DataCache
                </primary>
            </indexterm>
            <indexterm zone="openjpa.EncryptionProvider">
                <primary>
                    encryption
                </primary>
            </indexterm>
            <para>
		<emphasis role="bold">Property name: </emphasis><literal>openjpa.EncryptionProvider</literal>
            </para>
            <para>
		<emphasis role="bold">Configuration API:</emphasis>
		<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getEncryptionProvider()">
			<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getEncryptionProvider</methodname>
		</ulink>
            </para>
            <para>
		<emphasis role="bold">Resource adaptor config-property: </emphasis>
		<literal>EncryptionProvider</literal>
            </para>
            <para>
		<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin list string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/lib/encryption/EncryptionProvider.html"><classname>
org.apache.openjpa.lib.encryption.EncryptionProvider</classname></ulink>s to use for connection password
encryption. See <xref linkend="ref_guide_encryption"/> for details.
            </para>
        </section>

<!-- end -->
        <section id="openjpa.FetchGroups">
            <title>
                openjpa.FetchGroups
            </title>
            <indexterm zone="openjpa.FetchGroups">
                <primary>
                    fetch groups
                </primary>
                <secondary>
                    FetchGroups
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.FetchGroups
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getFetchGroups()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getFetchGroups
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
FetchGroups</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of fetch
group names that are to be loaded when retrieving objects from the datastore.
Fetch groups can also be set at runtime. See <xref linkend="ref_guide_fetch"/>
 for details.
            </para>
        </section>
        <!--
        <section id="openjpa.FilterListeners">
            <title>
                openjpa.FilterListeners
            </title>
            <indexterm zone="openjpa.FilterListeners">
                <primary>
                    FilterListeners
                </primary>
            </indexterm>
            <indexterm zone="openjpa.FilterListeners">
                <primary>
                    Query
                </primary>
                <secondary>
                    FilterListeners
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.FilterListeners
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getFilterListeners()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getFilterListeners
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
FilterListeners</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of full
plugin strings (see <xref linkend="ref_guide_conf_plugins"/>) for custom
<ulink url="../../apidocs/org/apache/openjpa/jdbc/kernel/exps/JDBCFilterListener.html">
<classname> org.apache.openjpa.jdbc.kernel.exps.JDBCFilterListener</classname>
</ulink>s to make available to all queries, in addition to the standard set of
listeners. You can also add filter listeners to individual queries. See
<xref linkend="ref_guide_enterprise_queryext"/> for details.
            </para>
        </section>
        -->
        <section id="openjpa.FlushBeforeQueries">
            <title>
                openjpa.FlushBeforeQueries
            </title>
            <indexterm zone="openjpa.FlushBeforeQueries">
                <primary>
                    FlushBeforeQueries
                </primary>
            </indexterm>
            <indexterm zone="openjpa.FlushBeforeQueries">
                <primary>
                    Query
                </primary>
                <secondary>
                    FlushBeforeQueries
                </secondary>
            </indexterm>
            <indexterm zone="openjpa.FlushBeforeQueries">
                <primary>
                    flush
                </primary>
                <secondary>
                    FlushBeforeQueries
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.FlushBeforeQueries</literal>
            </para>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.FlushBeforeQueries</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getFlushBeforeQueries()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getFlushBeforeQueries
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
FlushBeforeQueries</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether or not to flush any
changes made in the current transaction to the datastore before executing a
query. See <xref linkend="ref_guide_dbsetup_retain"/> for details.
            </para>
        </section>
        <section id="openjpa.IgnoreChanges">
            <title>
                openjpa.IgnoreChanges
            </title>
            <indexterm zone="openjpa.IgnoreChanges">
                <primary>
                    IgnoreChanges
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.IgnoreChanges
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getIgnoreChanges()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getIgnoreChanges
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
IgnoreChanges</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether to consider modifications
to persistent objects made in the current transaction when evaluating queries.
Setting this to <literal>true</literal> allows OpenJPA to ignore changes and
execute the query directly against the datastore. A value of <literal>false
</literal> forces OpenJPA to consider whether the changes in the current
transaction affect the query, and if so to either evaluate the query in-memory
or flush before running it against the datastore.
            </para>
        </section>
        <section id="openjpa.Id">
            <title>openjpa.Id</title>
            <indexterm zone="openjpa.Id">
                <primary>Id</primary>
            </indexterm>
            <para>
            <emphasis role="bold">Property name:</emphasis>
            <literal>openjpa.Id</literal>
            </para>
            <para>
            <emphasis role="bold">Resource adaptor config-property:</emphasis>
            <literal>Id</literal>
            </para>
            <para>
            <emphasis role="bold">Default:</emphasis> none
            </para>
            <para>
            <emphasis role="bold">Description:</emphasis> An
            environment-specific identifier for this configuration. This
            might correspond to a JPA persistence-unit name, or to some other
            more-unique value available in the current environment.
            </para>
        </section>

        <section id="openjpa.InitializeEagerly">
            <title>
                openjpa.InitializeEagerly
            </title>
            <indexterm zone="openjpa.InitializeEagerly">
                <primary>
                    InverseManager
                </primary>
            </indexterm>
            <indexterm zone="openjpa.InitializeEagerly">
                <primary>
                    Initialization
                </primary>
                <secondary>
                    Configuration
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.InitializeEagerly
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#isInitializeEagerly()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.isInitializeEagerly
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
InitializeEagerly</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>false</literal>,
<literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Controls whether initialization
is eager or lazy. Eager initialization imply all persistent classes, their
mapping information, database connectivity and all other resources specified in
the configuration of a persistence unit will be initialized when a persistent
unit is constructed. The default behavior is
lazy i.e. persistent classes, database and other resources are initialized only
when the application refers to a resource for the first time.
            </para>
        </section>

        <section id="openjpa.Instrumentation">
            <title>
                openjpa.Instrumentation
            </title>
            <indexterm zone="openjpa.Instrumentation">
                <primary>
                    Instrumentation
                </primary>
            </indexterm>
            <indexterm zone="Instrumentation">
                <primary>
                    Instrumentation
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.Instrumentation</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getInstrumentation()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getInstrumentation
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Instrumentation</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>-</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>jmx</literal>,
<literal>custom plugin string</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing one or more instances of
<ulink url="../../apidocs/org/apache/openjpa/lib/instrumentation/InstrumentationProvider.html">
<classname>org.apache.openjpa.lib.instrumentation.InstrumentationProvider</classname></ulink> and
specific instruments to enable. See <xref linkend="ref_guide_instrumentation"/> for details.
            </para>
        </section>

        <section id="openjpa.InverseManager">
            <title>
                openjpa.InverseManager
            </title>
            <indexterm zone="openjpa.InverseManager">
                <primary>
                    InverseManager
                </primary>
            </indexterm>
            <indexterm zone="openjpa.InverseManager">
                <primary>
                    bidirectional relation
                </primary>
                <secondary>
                    InverseManager
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.InverseManager
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getInverseManager()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getInverseManager
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
InverseManager</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>false</literal>,
<literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing a
<ulink url="../../apidocs/org/apache/openjpa/kernel/InverseManager.html">
<classname>org.apache.openjpa.kernel.InverseManager</classname></ulink> to use
for managing bidirectional relations upon a flush. See
<xref linkend="ref_guide_inverses"/> for usage documentation.
            </para>
        </section>
        <section id="openjpa.LockManager">
            <title>
                openjpa.LockManager
            </title>
            <indexterm zone="openjpa.LockManager">
                <primary>
                    LockManager
                </primary>
            </indexterm>
            <indexterm zone="openjpa.LockManager">
                <primary>
                    locking
                </primary>
                <secondary>
                    LockManager
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.LockManager
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getLockManager()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getLockManager
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
LockManager</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>mixed</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>none</literal>, <literal>version</literal>,
<literal>pessimistic</literal>, <literal>mixed</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing a
<ulink url="../../apidocs/org/apache/openjpa/kernel/LockManager.html"><classname>
org.apache.openjpa.kernel.LockManager</classname></ulink> to use for acquiring
locks on persistent instances during transactions.  See
<xref linkend="ref_guide_locking_lockmgr"/> for more information.
            </para>
        </section>
        <section id="openjpa.LockTimeout">
            <title>
                openjpa.LockTimeout
            </title>
            <indexterm zone="openjpa.LockTimeout">
                <primary>
                    LockTimeout
                </primary>
            </indexterm>
            <indexterm zone="openjpa.LockTimeout">
                <primary>
                    locking
                </primary>
                <secondary>
                    LockTimeout
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.LockTimeout
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getLockTimeout()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getLockTimeout
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
LockTimeout</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>-1</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The number of milliseconds to wait
for an object lock before throwing an exception, or -1 for no limit. See
<xref linkend="ref_guide_locking"/> for details.
            </para>
        </section>
        <section id="openjpa.Log">
            <title>
                openjpa.Log
            </title>
            <indexterm zone="openjpa.Log">
                <primary>
                    Log
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Log">
                <primary>
                    logging
                </primary>
                <secondary>
                    Log
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Log</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/lib/conf/Configuration.html#getLog()">
<methodname>org.apache.openjpa.lib.conf.Configuration.getLog</methodname>
</ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>Log
</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>openjpa</literal>,
<literal>commons</literal>, <literal>log4j</literal>, <literal>slf4j</literal>,
<literal>none</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing a
<ulink url="../../apidocs/org/apache/openjpa/lib/log/LogFactory.html"><classname>
org.apache.openjpa.lib.log.LogFactory</classname></ulink> to use for logging.
For details on logging, see <xref linkend="ref_guide_logging"/>.
            </para>
        </section>
        <section id="openjpa.ManagedRuntime">
            <title>
                openjpa.ManagedRuntime
            </title>
            <indexterm zone="openjpa.ManagedRuntime">
                <primary>
                    ManagedRuntime
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ManagedRuntime">
                <primary>
                    transactions
                </primary>
                <secondary>
                    managed
                </secondary>
                <tertiary>
                    ManagedRuntime
                </tertiary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.ManagedRuntime
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getManagedRuntime()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getManagedRuntime
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ManagedRuntime</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>auto</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/ee/ManagedRuntime.html"><classname>
org.apache.openjpa.ee.ManagedRuntime</classname></ulink> implementation to use
for obtaining a reference to the <classname>TransactionManager</classname> in an
enterprise environment.
            </para>
        </section>
        <section id="openjpa.Mapping">
            <title>
                openjpa.Mapping
            </title>
            <indexterm zone="openjpa.Mapping">
                <primary>
                    Mapping
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Mapping
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getMapping()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getMapping</methodname>
</ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Mapping</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The symbolic name of the
object-to-datastore mapping to use.
            </para>
        </section>
        <section id="openjpa.MaxFetchDepth">
            <title>
                openjpa.MaxFetchDepth
            </title>
            <indexterm zone="openjpa.MaxFetchDepth">
                <primary>
                    MaxFetchDepth
                </primary>
            </indexterm>
            <indexterm zone="openjpa.MaxFetchDepth">
                <primary>
                    eager fetching
                </primary>
                <secondary>
                    MaxFetchDepth
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.MaxFetchDepth
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getMaxFetchDepth()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getMaxFetchDepth
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
MaxFetchDepth</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>-1</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The maximum depth of relations to
traverse when eager fetching. Use -1 for no limit. Defaults to no limit.  See
<xref linkend="ref_guide_perfpack_eager"/> for details on eager fetching.
            </para>
        </section>
        <section id="openjpa.MetaDataFactory">
            <title>
                openjpa.MetaDataFactory
            </title>
            <indexterm zone="openjpa.MetaDataFactory">
                <primary>
                    MetaDataFactory
                </primary>
            </indexterm>
            <indexterm zone="openjpa.MetaDataFactory">
                <primary>
                    metadata
                </primary>
                <secondary>
                    MetaDataFactory
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.MetaDataFactory
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getMetaDataFactory()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getMetaDataFactory
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
MetaDataFactory</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> <literal>jpa</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/meta/MetaDataFactory.html">
<classname>openjpa.meta.MetaDataFactory</classname></ulink> to use to store and
retrieve metadata for your persistent classes. See
<xref linkend="ref_guide_meta_factory"/> for details.
            </para>
        </section>
        <!-- start -->
        <section id="openjpa.MetaDataRepository">
            <title>
                openjpa.MetaDataRepository
            </title>
            <indexterm zone="openjpa.MetaDataRepository">
                <primary>
                    MetaDataRepository
                </primary>
            </indexterm>
            <indexterm zone="openjpa.MetaDataRepository">
                <primary>
                    metadata
                </primary>
                <secondary>
                    MetaDataRepository
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.MetaDataRepository
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getMetaDataRepository()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getMetaDataRepository
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
MetaDataRepository</literal>
            </para>
            <para>
		<emphasis role="bold">Default:</emphasis>none<literal></literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/meta/MetaDataRepository.html">
<classname>openjpa.meta.MetaDataRepository</classname></ulink> to use to store and
retrieve metadata for your persistent classes. See
<xref linkend="ref_guide_meta_repository"/> for details.
            </para>
        </section>

        <!-- end -->

        <section id="openjpa.Multithreaded">
            <title>
                openjpa.Multithreaded
            </title>
            <indexterm zone="openjpa.Multithreaded">
                <primary>
                    Multithreaded
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Multithreaded">
                <primary>
                    threading
                </primary>
                <secondary>
                    Multithreaded
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Multithreaded
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getMultithreaded()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getMultithreaded
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Multithreaded</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether persistent instances and
OpenJPA components other than the <classname>EntityManagerFactory</classname>
will be accessed by multiple threads at once.
            </para>
        </section>
        <section id="openjpa.Optimistic">
            <title>
                openjpa.Optimistic
            </title>
            <indexterm zone="openjpa.Optimistic">
                <primary>
                    Optimistic
                </primary>
            </indexterm>
            <indexterm zone="openjpa.Optimistic">
                <primary>
                    transactions
                </primary>
                <secondary>
                    optimistic
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Optimistic
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getOptimistic()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getOptimistic
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Optimistic</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Selects between optimistic and
pessimistic (datastore) transactional modes.
            </para>
        </section>
        <section id="openjpa.OptimizeIdCopy">
            <title>
                openjpa.OptimizeIdCopy
            </title>
            <indexterm zone="openjpa.OptimizeIdCopy">
                <primary>
                    OptimizeIdCopy
                </primary>
            </indexterm>
            <indexterm zone="openjpa.OptimizeIdCopy">
                <primary>
                    id
                </primary>
                <secondary>
                    enhancement
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.OptimizeIdCopy
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getOptimizeIdCopy()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getOptimizeIdCopy
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
OptimizeIdCopy</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Attempt to optimize id class copy operations
used internally by the provider during various ORM operations.  This optimization is only
applicable for entities using simple id classes (via @IdClass or XML equivalent) that do not
have public setters, provide a public constructor with exact matching parameter types, and
perform direct assignments to id class fields within the constructor. If these conditions
are met, OpenJPA will use a public constructor during internal id copy operations instead
of less optimal reflection. Optimization of id copy occurs during the enhancement phase.
If the enhancer determines optimization cannot occur, it will fallback to the normal behavior.
A side effect of enabling this property is that an id class constructor will be called by
the provider during runtime operations.  If there is logic in the constructor in addition
to field initialization, (parameter verification, for example) that logic will also be
executed during the operation, which could result in a change in runtime behavior.
            </para>
        </section>
        <section id="openjpa.OrphanedKeyAction">
            <title>
                openjpa.OrphanedKeyAction
            </title>
            <indexterm zone="openjpa.OrphanedKeyAction">
                <primary>
                    OrphanedKeyAction
                </primary>
            </indexterm>
            <indexterm zone="openjpa.OrphanedKeyAction">
                <primary>
                    foreign keys
                </primary>
                <secondary>
                    OrphanedKeyAction
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.OrphanedKeyAction</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getOrphanedKeyAction()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getOrphanedKeyAction
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
OrphanedKeyAction</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>log</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>log</literal>,
<literal>exception</literal>, <literal>none</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing a
<ulink url="../../apidocs/org/apache/openjpa/event/OrphanedKeyAction.html">
<classname>org.apache.openjpa.event.OrphanedKeyAction</classname></ulink> to
invoke when OpenJPA discovers an orphaned datastore key. See
<xref linkend="ref_guide_orphan"/> for details.
            </para>
        </section>
        <section id="openjpa.NontransactionalRead">
            <title>
                openjpa.NontransactionalRead
            </title>
            <indexterm zone="openjpa.NontransactionalRead">
                <primary>
                    NontransactionalRead
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.NontransactionalRead</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getNontransactionalRead()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getNontransactionalRead
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
NontransactionalRead</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether the OpenJPA runtime will
allow you to read data outside of a transaction.
            </para>
        </section>
        <section id="openjpa.NontransactionalWrite">
            <title>
                openjpa.NontransactionalWrite
            </title>
            <indexterm zone="openjpa.NontransactionalWrite">
                <primary>
                    NontransactionalWrite
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.NontransactionalWrite</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getNontransactionalWrite()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getNontransactionalWrite
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
NontransactionalWrite</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> <literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether you can modify persistent
objects and perform persistence operations outside of a transaction. Changes
will take effect on the next transaction.
            </para>
        </section>
        <section id="openjpa.ProxyManager">
            <title>
                openjpa.ProxyManager
            </title>
            <indexterm zone="openjpa.ProxyManager">
                <primary>
                    ProxyManager
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ProxyManager">
                <primary>
                    proxies
                </primary>
                <secondary>
                    ProxyManager
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.ProxyManager
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getProxyManager()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getProxyManager
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ProxyManager</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>default</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing a
<ulink url="../../apidocs/org/apache/openjpa/util/ProxyManager.html"><classname>
org.apache.openjpa.util.ProxyManager</classname></ulink> to use for proxying
mutable second class objects. See
<xref linkend="ref_guide_pc_scos_proxy_custom"/> for details.
            </para>
        </section>

        <section id="openjpa.PostLoadOnMerge">
            <title>
                openjpa.PostLoadOnMerge
            </title>
            <indexterm zone="openjpa.PostLoadOnMerge">
                <primary>
                    PostLoadOnMerge
                </primary>
            </indexterm>
            <para>
                <emphasis role="bold">Property name: </emphasis><literal>
                openjpa.PostLoadOnMerge</literal>
            </para>
            <para>
                <emphasis role="bold">Configuration API:</emphasis>
                <ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getPostLoadOnMerge()">
                    <methodname>
                        org.apache.openjpa.conf.OpenJPAConfiguration.getPostLoadOnMerge
                    </methodname></ulink>
            </para>
            <para>
                <emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
                PostLoadOnMerge</literal>
            </para>
            <para>
                <emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
                <emphasis role="bold">Description:</emphasis> Whether the OpenJPA runtime will
                trigger a PostLoad lifecycle event for EntityManager#merge(). If you enable this
                option, OpenJPA will also ensure that the whole entity from the database will
                get passed to the PostLoad entity listener.
            </para>
        </section>



        <section id="openjpa.QueryCache">
            <title>
                openjpa.QueryCache
            </title>
            <indexterm zone="openjpa.QueryCache">
                <primary>
                    QueryCache
                </primary>
            </indexterm>
            <indexterm zone="openjpa.QueryCache">
                <primary>
                    caching
                </primary>
                <secondary>
                    QueryCache
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.QueryCache
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getQueryCache()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getQueryCache
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
QueryCache</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/datacache/QueryCache.html">
<classname>org.apache.openjpa.datacache.QueryCache</classname></ulink>
implementation to use for caching of queries loaded from the data store. See
<xref linkend="ref_guide_cache_query"/> for details.
            </para>
        </section>
		<section id="openjpa.QueryCompilationCache">
			<title>
                openjpa.QueryCompilationCache
            </title>
			<indexterm zone="openjpa.QueryCompilationCache">
				<primary>
                    QueryCompilationCache
                </primary>
			</indexterm>
			<indexterm zone="openjpa.QueryCompilationCache">
				<primary>
                    caching
                </primary>
				<secondary>
                    QueryCompilationCache
                </secondary>
			</indexterm>
			<para>
<emphasis role="bold">Property name:</emphasis>
<literal>openjpa.QueryCompilationCache</literal>
			</para>
			<para>
<emphasis role="bold">Resource adaptor config-property:</emphasis>
<literal>QueryCompilationCache</literal>
			</para>
			<para>
<emphasis role="bold">Default:</emphasis> <literal>true</literal>.
			</para>
			<para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<classname>java.util.Map</classname> to use for caching of data used during
query compilation.  See <xref linkend="ref_guide_cache_querycomp"/> for details.
			</para>
		</section>
        <section id="openjpa.ReadLockLevel">
            <title>
                openjpa.ReadLockLevel
            </title>
            <indexterm zone="openjpa.ReadLockLevel">
                <primary>
                    ReadLockLevel
                </primary>
            </indexterm>
            <indexterm zone="openjpa.ReadLockLevel">
                <primary>
                    locking
                </primary>
                <secondary>
                    ReadLockLevel
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.ReadLockLevel
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getReadLockLevel()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getReadLockLevel
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ReadLockLevel</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>read</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>none</literal>,
<literal>read</literal>, <literal>write</literal>,
<literal>optimistic</literal>, <literal>optimistic-force-increment</literal>,
<literal>pessimistic-read</literal>, <literal>pessimistic-write</literal>,
<literal>pessimistic-force-increment</literal>, numeric values for
lock-manager specific lock levels
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The default level at which to lock
objects retrieved during a non-optimistic transaction. Note that for the default
JDBC lock manager, <literal> read</literal> and <literal>write</literal> lock
levels are equivalent. Lock levels <literal>pessimistic-read</literal>,
<literal>pessimistic-write</literal> and
<literal>pessimistic-force-increment</literal> are in effect only when the
<literal>mixed</literal> lock manager is used.
            </para>
        </section>
        <section id="openjpa.RemoteCommitProvider">
            <title>
                openjpa.RemoteCommitProvider
            </title>
            <indexterm zone="openjpa.RemoteCommitProvider">
                <primary>
                    RemoteCommitProvider
                </primary>
            </indexterm>
            <indexterm zone="openjpa.RemoteCommitProvider">
                <primary>
                    caching
                </primary>
                <secondary>
                    RemoteCommitProvider
                </secondary>
            </indexterm>
            <indexterm zone="openjpa.RemoteCommitProvider">
                <primary>
                    remote
                </primary>
                <secondary>
                    RemoteCommitProvider
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.RemoteCommitProvider</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getRemoteCommitProvider()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getRemoteCommitProvider
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
RemoteCommitProvider</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> - If <literal>openjpa.DataCache</literal> is enabled, the default value is <literal>sjvm</literal>.
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/event/RemoteCommitProvider.html">
<classname>org.apache.openjpa.event.RemoteCommitProvider</classname></ulink>
implementation to use for distributed event notification. See
<xref linkend="ref_guide_event_conf"/> for more information.
            </para>
        </section>
        <section id="openjpa.RestoreState">
            <title>
                openjpa.RestoreState
            </title>
            <indexterm zone="openjpa.RestoreState">
                <primary>
                    RestoreState
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.RestoreState
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getRestoreState()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getRestoreState
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
RestoreState</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>none</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>none</literal>,
<literal>immutable</literal>, <literal>all</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether to restore managed fields
to their pre-transaction values when a rollback occurs.
            </para>
        </section>
        <section id="openjpa.RetainState">
            <title>
                openjpa.RetainState
            </title>
            <indexterm zone="openjpa.RetainState">
                <primary>
                    RetainState
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.RetainState
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getRetainState()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getRetainState
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
RetainState</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>true</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Whether persistent fields retain
their values on transaction commit.
            </para>
        </section>
        <section id="openjpa.RetryClassRegistration">
            <title>
                openjpa.RetryClassRegistration
            </title>
            <indexterm zone="openjpa.RetryClassRegistration">
                <primary>
                    RetryClassRegistration
                </primary>
            </indexterm>
            <indexterm zone="openjpa.RetryClassRegistration">
                <primary>
                    metadata
                </primary>
                <secondary>
                    RetryClassRegistration
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.RetryClassRegistration</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getRetryClassRegistration()">
<methodname>
org.apache.openjpa.conf.OpenJPAConfiguration.getRetryClassRegistration
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
RetryClassRegistration</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Controls whether to log a warning
and defer registration instead of throwing an exception when a persistent class
cannot be fully processed. This property should <emphasis>only</emphasis> be
used in complex classloader situations where security is preventing OpenJPA from
reading registered classes. Setting this to true unnecessarily may obscure more
serious problems.
            </para>
        </section>
        <section id="openjpa.RuntimeUnenhancedClasses">
            <title>openjpa.RuntimeUnenhancedClasses</title>
            <para>
                <emphasis role="bold">Property name: </emphasis>
                <literal>openjpa.RuntimeUnenhancedClasses</literal>
            </para>
            <para>
                 <emphasis role="bold">Configuration API: </emphasis>
                 <ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getRuntimeUnenhancedClasses()">org.apache.openjpa.conf.OpenJPAConfiguration.getRuntimeUnenhancedClasses</ulink>
            </para>
            <para>
                <emphasis role="bold">Resource adaptor config property:</emphasis>
                RuntimeUnenhancedClasses
            </para>
            <para>
                <emphasis role="bold">Default: </emphasis>
                <literal>unsupported</literal>

            </para>
            <para>
                <emphasis role="bold">Possible values:</emphasis>
                <literal>supported</literal>,
                <literal>unsupported</literal>,
                <literal>warn</literal>
            </para>
            <para>
                <emphasis role="bold">Description:</emphasis>
                The RuntimeUnenhancedClasses property controls how OpenJPA
                handles classes that have not been enhanced by the PCEnhancer
                tool or automatically by a javaagent. If RuntimeUnenhancedClasses is
                set to <literal>supported</literal> OpenJPA will automatically
                create subclasses for unenhanced entity classes. If set to
                <literal>unsupported</literal> OpenJPA will not create subclasses
                for unenhanced entity classes and will throw an exception when
                they are detected. If set to <literal>warn</literal> OpenJPA
                will not create subclasses for unenhanced entity classes
                but will log a warning message.
            </para>
            <para>
                This function is often useful for rapid prototyping but is not
                <emphasis role="italic">generally</emphasis>
                recommended for use in production. Please consult the reference guide
                before changing the default value.
            </para>
            <para>
                See the reference guide section on unenhanced types for more
                information
                <xref linkend="ref_guide_pc_enhance_unenhanced_types"/>
            </para>
        </section>
        <section id="openjpa.SavepointManager">
            <title>
                openjpa.SavepointManager
            </title>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.SavepointManager</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getSavepointManager()">
org.apache.openjpa.conf.OpenJPAConfiguration.getSavepointManager</ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property:</emphasis>
SavepointManager
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>in-mem</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>in-mem</literal>,
<literal>jdbc</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing a
<ulink url="../../apidocs/org/apache/openjpa/kernel/SavepointManager.html">
<classname>org.apache.openjpa.kernel.SavepointManager</classname></ulink> to
use for managing transaction savepoints. See
<xref linkend="ref_guide_savepoints"/> for details.
            </para>
        </section>
        <section id="openjpa.Sequence">
            <title>
                openjpa.Sequence
            </title>
            <indexterm zone="openjpa.Sequence">
                <primary>
                    Sequence
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Sequence
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getSequence()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getSequence
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Sequence</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>table</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/kernel/Seq.html"><classname>
org.apache.openjpa.kernel.Seq</classname></ulink> implementation to use for the
system sequence. See <xref linkend="ref_guide_sequence"/> for more
information.
            </para>
        </section>
        <section id="openjpa.Specification">
            <title>
                openjpa.Specification
            </title>
            <indexterm zone="openjpa.Specification">
                <primary>
                    Specification
                </primary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.Specification
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getSpecificationInstance()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getSpecificationInstance
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Specification</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>table</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A formatted string describing the Specification
to use for the default configuration options. The format of the Specifcation string is
<literal>name [major.[minor]]</literal> where <literal>name</literal> denotes the name of the
Specification such as <literal>JPA</literal> or <literal>JDO</literal>, <literal>major</literal>
denotes the major integral version number of the Specification and <literal>minor</literal>
denotes a minor version which can be an arbitrary string.
See <xref linkend="ref_guide_spec_compatibility"/> for more information.
            </para>
        </section>

        <section id="openjpa.TransactionMode">
            <title>
                openjpa.TransactionMode
            </title>
            <indexterm zone="openjpa.TransactionMode">
                <primary>
                    TransactionMode
                </primary>
            </indexterm>
            <indexterm zone="openjpa.TransactionMode">
                <primary>
                    transactions
                </primary>
                <secondary>
                    TransactionMode
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.TransactionMode
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getTransactionMode()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getTransactionMode
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
TransactionMode</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>local</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>local</literal>,
<literal>managed</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The default transaction mode to
use. You can override this setting per-session.
            </para>
        </section>

        <section id="openjpa.UseTCCLinSelectNew">
            <title>
                openjpa.UseTCCLinSelectNew
            </title>
            <indexterm zone="openjpa.UseTCCLinSelectNew">
                <primary>
                    UseTCCLinSelectNew
                </primary>
            </indexterm>
            <indexterm zone="openjpa.UseTCCLinSelectNew">
                <primary>
                    classloading
                </primary>
                <secondary>
                    UseTCCLinSelectNew
                </secondary>
            </indexterm>
            <para>
                <emphasis role="bold">Property name: </emphasis><literal>openjpa.UseTCCLinSelectNew</literal>
            </para>
            <para>
                <emphasis role="bold">Configuration API:</emphasis>
                <ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getUseTCCLinSelectNew()">
                <methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getUseTCCLinSelectNew
                </methodname></ulink>
            </para>
            <para>
                <emphasis role="bold">Resource adaptor config-property: </emphasis><literal>UseTCCLinSelectNew</literal>
            </para>
            <para>
                <emphasis role="bold">Default: </emphasis><literal>false</literal>
            </para>
            <para>
                <emphasis role="bold">Since: </emphasis><literal>OpenJPA-2.4.2</literal>
            </para>
            <para>
                <emphasis role="bold">Possible values: </emphasis><literal>true</literal>,
                <literal>false</literal>
            </para>
            <para>
                <emphasis role="bold">Description:</emphasis> Whether to try to use the ThreadContextClassLoader
                as fallback if the given class in a <literal>SELECT NEW</literal> statement could not be found
                with the default ClassLoader. This is mostly useful in EAR and OSGi environments.
                By default the ClassLoader of the entity is used.
            </para>
        </section>
        <section id="openjpa.WriteLockLevel">
            <title>
                openjpa.WriteLockLevel
            </title>
            <indexterm zone="openjpa.WriteLockLevel">
                <primary>
                    WriteLockLevel
                </primary>
            </indexterm>
            <indexterm zone="openjpa.WriteLockLevel">
                <primary>
                    locking
                </primary>
                <secondary>
                    WriteLockLevel
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.WriteLockLevel
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/conf/OpenJPAConfiguration.html#getWriteLockLevel()">
<methodname>org.apache.openjpa.conf.OpenJPAConfiguration.getWriteLockLevel
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
WriteLockLevel</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>write</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>none</literal>,
<literal>read</literal>, <literal>write</literal>,
<literal>optimistic</literal>, <literal>optimistic-force-increment</literal>,
<literal>pessimistic-read</literal>, <literal>pessimistic-write</literal>,
<literal>pessimistic-force-increment</literal>, numeric values for
lock-manager specific lock levels.
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The default level at which to lock
objects changed during a non-optimistic transaction. Note that for the default
JDBC lock manager, <literal> read</literal> and <literal>write</literal> lock
levels are equivalent. Lock levels <literal>pessimistic-read</literal>,
<literal>pessimistic-write</literal> and
<literal>pessimistic-force-increment</literal> are in effect only when the
<literal>mixed</literal> lock manager is used.
            </para>
        </section>
    </section>
    <section id="ref_guide_conf_jdbc">
        <title>
            OpenJPA JDBC Properties
        </title>
        <indexterm zone="ref_guide_conf_jdbc">
            <primary>
                configuration
            </primary>
            <secondary>
                of JDBC properties
            </secondary>
        </indexterm>
        <para>
The following properties apply exclusively to the OpenJPA JDBC back-end.
        </para>
        <section id="openjpa.jdbc.ConnectionDecorators">
            <title>
                openjpa.jdbc.ConnectionDecorators
            </title>
            <indexterm zone="openjpa.jdbc.ConnectionDecorators">
                <primary>
                    ConnectionDecorators
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.ConnectionDecorators">
                <primary>
                    connections
                </primary>
                <secondary>
                    ConnectionDecorators
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.ConnectionDecorators</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getConnectionDecorators()">
<methodname>
org.apache.openjpa.jdbc.conf.JDBCConfiguration.getConnectionDecorators
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ConnectionDecorators</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of plugin
strings (see <xref linkend="ref_guide_conf_plugins"/>) describing
<ulink url="../../apidocs/org/apache/openjpa/lib/jdbc/ConnectionDecorator.html">
<classname>org.apache.openjpa.lib.jdbc.ConnectionDecorator</classname></ulink>
instances to install on the connection factory. These decorators can wrap
connections passed from the underlying <classname>DataSource</classname> to add
functionality. OpenJPA will pass all connections through the list of decorators
before using them. Note that by default OpenJPA employs all
of the built-in decorators in the <classname>org.apache.openjpa.lib.jdbc
</classname> package already; you do not need to list them here.
            </para>
        </section>
        <section id="openjpa.jdbc.DBDictionary">
            <title>
                openjpa.jdbc.DBDictionary
            </title>
            <indexterm zone="openjpa.jdbc.DBDictionary">
                <primary>
                    DBDictionary
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.DBDictionary">
                <primary>
                    JDBC
                </primary>
                <secondary>
                    DBDictionary
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.DBDictionary</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getDBDictionary()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getDBDictionary
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DBDictionary</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> Based on the
<link linkend="openjpa.ConnectionURL"><literal>openjpa.ConnectionURL</literal>
</link><link linkend="openjpa.ConnectionDriverName"><literal>
openjpa.ConnectionDriverName</literal></link>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/DBDictionary.html">
<classname>org.apache.openjpa.jdbc.sql.DBDictionary</classname></ulink> to use
for database interaction. OpenJPA typically auto-configures the dictionary based
on the JDBC URL, but you may have to set this property explicitly if you are
using an unrecognized driver, to plug in your own dictionary for a database
OpenJPA does not support out-of-the-box, or if you like to change the default
configuration of an existing dictionary. See
<xref linkend="ref_guide_dbsetup_dbsupport"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.DriverDataSource">
            <title>
                openjpa.jdbc.DriverDataSource
            </title>
            <indexterm zone="openjpa.jdbc.DriverDataSource">
                <primary>
                    DriverDataSource
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.DriverDataSource">
                <primary>
                    JDBC
                </primary>
                <secondary>
                    DriverDataSource
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.DriverDataSource</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getDriverDataSource()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getDriverDataSource
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
DriverDataSource</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>auto</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>auto</literal>,
<literal>dbcp</literal>, <literal>simple</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The alias or full class name of
the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/DriverDataSource.html">
<classname>org.apache.openjpa.jdbc.schema.DriverDataSource</classname></ulink>
implementation to use to wrap JDBC Driver classes with javax.sql.DataSource
instances.
The <classname>org.apache.commons.dbcp2.BasicDataSource</classname> Apache Commons DBCP2 to be available on the classpath and provides connection pooling.
            </para>
        </section>
        <section id="openjpa.jdbc.EagerFetchMode">
            <title>
                openjpa.jdbc.EagerFetchMode
            </title>
            <indexterm zone="openjpa.jdbc.EagerFetchMode">
                <primary>
                    EagerFetchMode
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.EagerFetchMode">
                <primary>
                    eager fetching
                </primary>
                <secondary>
                    EagerFetchMode
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.EagerFetchMode</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getEagerFetchMode()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getEagerFetchMode
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
EagerFetchMode</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>parallel</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>parallel</literal>,
<literal>join</literal>, <literal>none</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Optimizes how OpenJPA loads
persistent relations. This setting can also be varied at runtime. See
<xref linkend="ref_guide_perfpack_eager"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.FetchDirection">
            <title>
                openjpa.jdbc.FetchDirection
            </title>
            <indexterm zone="openjpa.jdbc.FetchDirection">
                <primary>
                    FetchDirection
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.FetchDirection">
                <primary>
                    large result sets
                </primary>
                <secondary>
                    FetchDirection
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.FetchDirection</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getFetchDirection()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getFetchDirection
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
FetchDirection</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>forward</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>forward</literal>,
<literal>reverse</literal>, <literal>unknown</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The expected order in which query
result lists will be accessed. This property can also be varied at runtime. See
<xref linkend="ref_guide_dbsetup_lrs"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.JDBCListeners">
            <title>
                openjpa.jdbc.JDBCListeners
            </title>
            <indexterm zone="openjpa.jdbc.JDBCListeners">
                <primary>
                    JDBCListeners
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.JDBCListeners">
                <primary>
                    JDBC
                </primary>
                <secondary>
                    JDBCListeners
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.JDBCListeners</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getJDBCListeners()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getJDBCListeners
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
JDBCListeners</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of plugin
strings (see <xref linkend="ref_guide_conf_plugins"/>) describing
<ulink url="../../apidocs/org/apache/openjpa/lib/jdbc/JDBCListener.html">
<classname>org.apache.openjpa.lib.jdbc.JDBCListener</classname></ulink> event
listeners to install. These listeners will be notified on various JDBC-related
events.
            </para>
        </section>
        <section id="openjpa.jdbc.LRSSize">
            <title>
                openjpa.jdbc.LRSSize
            </title>
            <indexterm zone="openjpa.jdbc.LRSSize">
                <primary>
                    LRSSize
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.LRSSize">
                <primary>
                    large result sets
                </primary>
                <secondary>
                    LRSSize
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.jdbc.LRSSize
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getLRSSize()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getLRSSize
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
LRSSize</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>query</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>query</literal>,
<literal>last</literal>, <literal>unknown</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The strategy to use to calculate
the size of a result list. This property can also be varied at runtime. See
<xref linkend="ref_guide_dbsetup_lrs"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.MappingDefaults">
            <title>
                openjpa.jdbc.MappingDefaults
            </title>
            <indexterm zone="openjpa.jdbc.MappingDefaults">
                <primary>
                    MappingDefaults
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.MappingDefaults">
                <primary>
                    mapping metadata
                </primary>
                <secondary>
                    MappingDefaults
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.MappingDefaults</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getMappingDefaults()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getMappingDefaults
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
MappingDefaults</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> jpa
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/meta/MappingDefaults.html">
<classname>org.apache.openjpa.jdbc.meta.MappingDefaults</classname></ulink> to
use to define default column names, table names, and constraints for your
persistent classes. See <xref linkend="ref_guide_mapping_factory"/> for
details.
            </para>
        </section>
        <section id="openjpa.jdbc.MappingFactory">
            <title>
                openjpa.jdbc.MappingFactory
            </title>
            <indexterm zone="openjpa.jdbc.MappingFactory">
                <primary>
                    MappingFactory
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.MappingFactory">
                <primary>
                    mapping metadata
                </primary>
                <secondary>
                    MappingFactory
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.MappingFactory</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getMappingFactory()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getMappingFactory
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
MappingFactory</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/meta/MetaDataFactory.html">
<classname>org.apache.openjpa.meta.MetaDataFactory</classname></ulink> to use to
store and retrieve object-relational mapping information for your persistent
classes. See <xref linkend="ref_guide_mapping_factory"/> for details.
            </para>

        </section>
        <section id="openjpa.jdbc.QuerySQLCache">
            <title>
                openjpa.jdbc.QuerySQLCache
            </title>
            <indexterm zone="openjpa.jdbc.QuerySQLCache">
                <primary>
                    Prepared SQL Cache
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.QuerySQLCache">
                <primary>
                    caching
                </primary>
                <secondary>
                    QuerySQLCache
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name:</emphasis>
<literal>openjpa.jdbc.QuerySQLCache</literal>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property:</emphasis>
<literal>QuerySQLCache</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> <literal>true</literal>.
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the options to cache and
reuse SQL statements generated for JPQL queries.
See <xref linkend="ref_guide_cache_querysql"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.ResultSetType">
            <title>
                openjpa.jdbc.ResultSetType
            </title>
            <indexterm zone="openjpa.jdbc.ResultSetType">
                <primary>
                    ResultSetType
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.ResultSetType">
                <primary>
                    large result sets
                </primary>
                <secondary>
                    ResultSetType
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.ResultSetType</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getResultSetType()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getResultSetType
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
ResultSetType</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>forward-only</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>forward-only</literal>
, <literal>scroll-sensitive</literal>, <literal>scroll-insensitive</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The JDBC result set type to use
when fetching result lists. This property can also be varied at runtime. See
<xref linkend="ref_guide_dbsetup_lrs"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.Schema">
            <title>
                openjpa.jdbc.Schema
            </title>
            <indexterm zone="openjpa.jdbc.Schema">
                <primary>
                    schema
                </primary>
                <secondary>
                    Schema
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.jdbc.Schema
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getSchema()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getSchema
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Schema</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The default schema name to prepend
to unqualified table names. Also, the schema in which OpenJPA will create new
tables. See <xref linkend="ref_guide_schema_def"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.SchemaFactory">
            <title>
                openjpa.jdbc.SchemaFactory
            </title>
            <indexterm zone="openjpa.jdbc.SchemaFactory">
                <primary>
                    SchemaFactory
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.SchemaFactory">
                <primary>
                    schema
                </primary>
                <secondary>
                    SchemaFactory
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.SchemaFactory</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getSchemaFactory()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getSchemaFactory
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
SchemaFactory</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>dynamic</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>dynamic</literal>,
<literal>native</literal>, <literal>file</literal>, <literal>table</literal>,
others
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/schema/SchemaFactory.html">
<classname>org.apache.openjpa.jdbc.schema.SchemaFactory</classname></ulink> to
use to store and retrieve information about the database schema. See
<xref linkend="ref_guide_schema_info_factory"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.Schemas">
            <title>
                openjpa.jdbc.Schemas
            </title>
            <indexterm zone="openjpa.jdbc.Schemas">
                <primary>
                    schema
                </primary>
                <secondary>
                    Schemas
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.jdbc.Schemas
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getSchemas()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getSchemas
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
Schemas</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A comma-separated list of the
schemas and/or tables used for your persistent data. See
<xref linkend="ref_guide_schema_info_list"/> for details.
            </para>
        </section>
        <section id="openjpa.jdbc.SQLFactory">
            <title>
                openjpa.jdbc.SQLFactory
            </title>
            <indexterm zone="openjpa.jdbc.SQLFactory">
                <primary>
                    SQLFactory
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.SQLFactory">
                <primary>
                    SQL
                </primary>
                <secondary>
                    SQLFactory
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>openjpa.jdbc.SQLFactory
</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getSQLFactory()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getSQLFactory
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
SQLFactory</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>default</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> A plugin string (see
<xref linkend="ref_guide_conf_plugins"/>) describing the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/sql/SQLFactory.html"><classname>
org.apache.openjpa.jdbc.sql.SQLFactory</classname></ulink> to use to abstract
common SQL constructs.
            </para>
        </section>
        <section id="openjpa.jdbc.SubclassFetchMode">
            <title>
                openjpa.jdbc.SubclassFetchMode
            </title>
            <indexterm zone="openjpa.jdbc.SubclassFetchMode">
                <primary>
                    SubclassFetchMode
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.SubclassFetchMode">
                <primary>
                    eager fetching
                </primary>
                <secondary>
                    SubclassFetchMode
                </secondary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.SubclassFetchMode">
                <primary>
                    inheritance
                </primary>
                <secondary>
                    SubclassFetchMode
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.SubclassFetchMode</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getSubclassFetchMode()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getSubclassFetchMode
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
SubclassFetchMode</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>parallel</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>parallel</literal>,
<literal>join</literal>, <literal>none</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> How to select subclass data when
it is in other tables. This setting can also be varied at runtime. See
<xref linkend="ref_guide_perfpack_eager"/>.
            </para>
        </section>
        <section id="openjpa.jdbc.SynchronizeMappings">
            <title>
                openjpa.jdbc.SynchronizeMappings
            </title>
            <indexterm zone="openjpa.jdbc.SynchronizeMappings">
                <primary>
                    SynchronizeMappings
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.SynchronizeMappings">
                <primary>
                    mapping metadata
                </primary>
                <secondary>
                    SynchronizeMappings
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.SynchronizeMappings</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getSynchronizeMappings()">
<methodname>
org.apache.openjpa.jdbc.conf.JDBCConfiguration.getSynchronizeMappings
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
SynchronizeMappings</literal>
            </para>
            <para>
<emphasis role="bold">Default:</emphasis> -
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> Controls whether OpenJPA will
attempt to run the mapping tool on all persistent classes to synchronize their
mappings and schema at runtime. Useful for rapid test/debug cycles. See
<xref linkend="ref_guide_mapping_synch"/> for more information.
            </para>
        </section>
        <section id="openjpa.jdbc.TransactionIsolation">
            <title>
                openjpa.jdbc.TransactionIsolation
            </title>
            <indexterm zone="openjpa.jdbc.TransactionIsolation">
                <primary>
                    TransactionIsolation
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.TransactionIsolation">
                <primary>
                    transactions
                </primary>
                <secondary>
                    TransactionIsolation
                </secondary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.TransactionIsolation">
                <primary>
                    JDBC
                </primary>
                <secondary>
                    TransactionIsolation
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.TransactionIsolation</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getTransactionIsolation()">
<methodname>
org.apache.openjpa.jdbc.conf.JDBCConfiguration.getTransactionIsolation
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
TransactionIsolation</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>default</literal>
            </para>
            <para>
<emphasis role="bold">Possible values: </emphasis><literal>default</literal>,
<literal>none</literal>, <literal>read-committed</literal>, <literal>
read-uncommitted</literal>, <literal>repeatable-read</literal>, <literal>
serializable</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The JDBC transaction isolation
level to use. See <xref linkend="ref_guide_dbsetup_isolation"/> for
details.
            </para>
        </section>
        <section id="openjpa.jdbc.UpdateManager">
            <title>
                openjpa.jdbc.UpdateManager
            </title>
            <indexterm zone="openjpa.jdbc.UpdateManager">
                <primary>
                    UpdateManager
                </primary>
            </indexterm>
            <indexterm zone="openjpa.jdbc.UpdateManager">
                <primary>
                    JDBC
                </primary>
                <secondary>
                    UpdateManager
                </secondary>
            </indexterm>
            <para>
<emphasis role="bold">Property name: </emphasis><literal>
openjpa.jdbc.UpdateManager</literal>
            </para>
            <para>
<emphasis role="bold">Configuration API:</emphasis>
<ulink url="../../apidocs/org/apache/openjpa/jdbc/conf/JDBCConfiguration.html#getUpdateManager()">
<methodname>org.apache.openjpa.jdbc.conf.JDBCConfiguration.getUpdateManager
</methodname></ulink>
            </para>
            <para>
<emphasis role="bold">Resource adaptor config-property: </emphasis><literal>
UpdateManager</literal>
            </para>
            <para>
<emphasis role="bold">Default: </emphasis><literal>batching-constraint</literal>
            </para>
            <para>
            <emphasis role="bold">Possible values: </emphasis><literal>default</literal>,
<literal>operation-order</literal>, <literal>constraint</literal>, <literal>
batching-constraint</literal>, <literal>batching-operation-order</literal>
            </para>
            <para>
<emphasis role="bold">Description:</emphasis> The full class name of the
<ulink url="../../apidocs/org/apache/openjpa/jdbc/kernel/UpdateManager.html">
<classname>org.apache.openjpa.jdbc.kernel.UpdateManager</classname></ulink> to
use to flush persistent object changes to the datastore. The provided default
implementation is
<ulink url="../../apidocs/org/apache/openjpa/jdbc/kernel/BatchingConstraintUpdateManager">
<classname>org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager</classname>
</ulink>.

            </para>
        </section>

        <section id="ref_guide_spec_compatibility">
        <title>Compatibility with Specification</title>
        <para>
The default behavior of certain OpenJPA API methods can evolve to align with the behaviors
defined in JPA specification. To maintain backward compatibility, OpenJPA allows configuration
options such that while the default behavior changes to align with current JPA specification, the
previous behaviors can always be emulated.
		</para>
		<para>
For example, JPA 2.0 specification
introduces a new API <literal>void EntityManager.detach(Object entity)</literal> that detaches
the given entity from the current persistence context. OpenJPA has provided similar
feature via <literal>&lt;T&gt; T OpenJPAEntityManager.detach(T entity)</literal> prior to JPA 2.0.
OpenJPA <literal>detach()</literal>, however, has different default behavior than what JPA 2.0
specification mandates. Firstly, OpenJPA creates a copy of the given entity as a detached instance
and returns it, whereas JPA 2.0 behavior requires the same given entity instance be detached.
Secondly, the given instance is removed from the persistence context for JPA 2.0, whereas
OpenJPA <literal>detach()</literal> method, prior to JPA 2.0, does not remove the instance
from the persistence context as a copy is returned. Thirdly, OpenJPA will flush before
detaching a dirty instance so that the detached instance can later be merged, whereas
JPA 2.0 <literal>detach()</literal> semantics does not require a dirty instance be flushed
before detach.
		</para>
		<para>
A user application running with OpenJPA that is compliant to a specific version of JPA specification
can emulate the older behavior by configuring OpenJPA compatibility options.
For example, <literal>openjpa.Compatibility=FlushBeforeDetach=false,CopyOnDetach=true</literal>
will emulate the older behavior of detach even when running with OpenJPA that is
compliant to JPA 2.0 specification.  The configuration can also be set to a different version of the specification.
For example, <literal>openjpa.Specification="JPA 1.0"</literal> configuration setting will emulate
default OpenJPA behavior as it were for JPA specification version 1.0. Setting
<literal>openjpa.Specification</literal> is a shorthand for more fine-grained control available via
<literal>openjpa.Compatibility</literal>.

		</para>
        </section>
    </section>
</chapter>
