<?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="jpa_overview_persistence">
    <title>
        Persistence
    </title>
    <indexterm zone="jpa_overview_persistence">
        <primary>
            Persistence
        </primary>
    </indexterm>
    <indexterm zone="jpa_overview_persistence">
        <primary>
            EntityManagerFactory
        </primary>
        <secondary>
            construction
        </secondary>
    </indexterm>
    <indexterm zone="jpa_overview_persistence">
        <primary>
            Persistence
        </primary>
        <secondary>
            getEntityManagerFactory
        </secondary>
    </indexterm>
    <indexterm zone="jpa_overview_persistence">
        <primary>
            getEntityManagerFactory
        </primary>
        <seealso>
            Persistence
        </seealso>
    </indexterm>
    <mediaobject>
        <imageobject>
            <!-- PNG image data, 427 x 121 (see README) -->
            <imagedata fileref="img/persistence.png" width="285px"/>
        </imageobject>
    </mediaobject>
    <note>
        <para>
OpenJPA also includes the
<ulink url="../javadoc/org/apache/openjpa/persistence/OpenJPAPersistence.html">
<classname>OpenJPAPersistence</classname></ulink> helper class to provide
additional utility methods.
        </para>
    </note>
    <para>
Within a container, you will typically use <emphasis>injection</emphasis> to
access an <classname>EntityManagerFactory</classname>. Applications operating
outside of a container, however, can use the
<ulink url="http://download.oracle.com/javaee/6/api/javax/persistence/Persistence.html">
<classname>Persistence</classname></ulink> class to obtain <classname>
EntityManagerFactory</classname> objects in a vendor-neutral fashion.
    </para>
<programlisting>
public static EntityManagerFactory createEntityManagerFactory(String name);
public static EntityManagerFactory createEntityManagerFactory(String name, Map props);
public static PersistenceUtil getPersistenceUtil();
</programlisting>
    <para>
Each <methodname>createEntityManagerFactory</methodname> method searches the
system for an <classname>EntityManagerFactory</classname> definition with the
given name. Use <literal>null</literal> for an unnamed factory. The optional map
contains vendor-specific property settings used to further configure the
factory.
    </para>
    <para>
<filename>persistence.xml</filename> files define <classname>
EntityManagerFactories</classname>. The <methodname>createEntityManagerFactory
</methodname> methods search for <filename>persistence.xml</filename> files
within the <filename>META-INF</filename> directory of any <literal>CLASSPATH
</literal> element. For example, if your <literal>CLASSPATH</literal> contains
the <filename>conf</filename> directory, you could place an <classname>
EntityManagerFactory</classname> definition in <filename>
conf/META-INF/persistence.xml</filename>.
    </para>
    <para>
The <methodname>getPersistenceUtil</methodname> method returns a PersistenceUtil
interface that can be used to determine whether an entity or attribute of an
entity is loaded.  
</para>
<programlisting>
PersistenceUtil pUtil = Persistence.getPersistenceUtil();

if (!pUtil.isLoaded(myEntity)) {
    loadEntity(myEntity);
}
</programlisting>
    <section id="jpa_overview_persistence_xml">
        <title>
            persistence.xml
        </title>
        <para>
With the introduction of JPA 2.0, there are two versions of the
<filename>persistence.xml</filename>.  The most current revision of the
2.0 persistence schema is presented below.  Version 1.0 of the persistence
schema can be found at 
<ulink url="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"/>.
        </para>
<programlisting>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;!-- persistence.xml schema --&gt;
&lt;xsd:schema targetNamespace="http://java.sun.com/xml/ns/persistence"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:persistence="http://java.sun.com/xml/ns/persistence"
    elementFormDefault="qualified" attributeFormDefault="unqualified"
    version="2.0"&gt;

    &lt;xsd:annotation&gt;
        &lt;xsd:documentation&gt;
            @(#)persistence_2_0.xsd 1.0 October 1 2009
        &lt;/xsd:documentation&gt;
    &lt;/xsd:annotation&gt;

    &lt;xsd:annotation&gt;
        &lt;xsd:documentation&gt;

          DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

          Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved.

          The contents of this file are subject to the terms of either the
          GNU General Public License Version 2 only ("GPL") or the Common
          Development and Distribution License("CDDL") (collectively, the
          "License").  You may not use this file except in compliance with
          the License. You can obtain a copy of the License at
          https://glassfish.dev.java.net/public/CDDL+GPL.html or
          glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
          specific language governing permissions and limitations under the
          License.

          When distributing the software, include this License Header
          Notice in each file and include the License file at
          glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
          particular file as subject to the "Classpath" exception as
          provided by Sun in the GPL Version 2 section of the License file
          that accompanied this code.  If applicable, add the following
          below the License Header, with the fields enclosed by brackets []
          replaced by your own identifying information:
          "Portions Copyrighted [year] [name of copyright owner]"

          Contributor(s):

          If you wish your version of this file to be governed by only the
          CDDL or only the GPL Version 2, indicate your decision by adding
          "[Contributor] elects to include this software in this
          distribution under the [CDDL or GPL Version 2] license."  If you
          don't indicate a single choice of license, a recipient has the
          option to distribute your version of this file under either the
          CDDL, the GPL Version 2 or to extend the choice of license to its
          licensees as provided above.  However, if you add GPL Version 2
          code and therefore, elected the GPL Version 2 license, then the
          option applies only if the new code is made subject to such
          option by the copyright holder.

        &lt;/xsd:documentation&gt;
    &lt;/xsd:annotation&gt;

    &lt;xsd:annotation&gt;
        &lt;xsd:documentation&gt;
        &lt;![CDATA[
            This is the XML Schema for the persistence configuration file.
            The file must be named "META-INF/persistence.xml" in the
            persistence archive.
            Persistence configuration files must indicate
            the persistence schema by using the persistence namespace:
            http://java.sun.com/xml/ns/persistence
            and indicate the version of the schema by
            using the version element as shown below:
            &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
            http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
            version="2.0"&gt;
            ...
            &lt;/persistence&gt;
        ]]&gt;
        &lt;/xsd:documentation&gt;
    &lt;/xsd:annotation&gt;

    &lt;xsd:simpleType name="versionType"&gt;
        &lt;xsd:restriction base="xsd:token"&gt;
            &lt;xsd:pattern value="[0-9]+(\.[0-9]+)*" /&gt;
        &lt;/xsd:restriction&gt;
    &lt;/xsd:simpleType&gt;
    &lt;!-- **************************************************** --&gt;
    &lt;xsd:element name="persistence"&gt;
        &lt;xsd:complexType&gt;
            &lt;xsd:sequence&gt;
                &lt;!-- **************************************************** --&gt;
                &lt;xsd:element name="persistence-unit"
                    minOccurs="1" maxOccurs="unbounded"&gt;
                    &lt;xsd:complexType&gt;
                        &lt;xsd:annotation&gt;
                            &lt;xsd:documentation&gt;
                                Configuration of a persistence unit.
                            &lt;/xsd:documentation&gt;
                        &lt;/xsd:annotation&gt;
                        &lt;xsd:sequence&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="description"
                                type="xsd:string" minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        Description of this persistence unit.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="provider"
                                type="xsd:string" minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        Provider class that supplies EntityManagers for this
                                        persistence unit.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="jta-data-source"
                                type="xsd:string" minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        The container-specific name of the JTA datasource to use.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="non-jta-data-source"
                                type="xsd:string" minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        The container-specific name of a non-JTA datasource to use.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="mapping-file"
                                type="xsd:string" minOccurs="0"
                                maxOccurs="unbounded"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        File containing mapping information. Loaded as a resource
                                        by the persistence provider.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="jar-file"
                                type="xsd:string" minOccurs="0"
                                maxOccurs="unbounded"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        Jar file that is to be scanned for managed classes.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="class" type="xsd:string"
                                minOccurs="0" maxOccurs="unbounded"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        Managed class to be included in the persistence unit and
                                        to scan for annotations. It should be annotated
                                        with either @Entity, @Embeddable or @MappedSuperclass.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="exclude-unlisted-classes"
                                type="xsd:boolean" default="true"
                                minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        When set to true then only listed classes and jars will
                                        be scanned for persistent classes, otherwise the
                                        enclosing jar or directory will also be scanned.
                                        Not applicable to Java SE persistence units.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="shared-cache-mode"
                                type="persistence:persistence-unit-caching-type"
                                minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        Defines whether caching is enabled for the
                                        persistence unit if caching is supported by the
                                        persistence provider. When set to ALL, all entities
                                        will be cached. When set to NONE, no entities will
                                        be cached. When set to ENABLE_SELECTIVE, only entities
                                        specified as cacheable will be cached. When set to
                                        DISABLE_SELECTIVE, entities specified as not cacheable
                                        will not be cached. When not specified or when set to
                                        UNSPECIFIED, provider defaults may apply.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="validation-mode"
                                type="persistence:persistence-unit-validation-mode-type"
                                minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        The validation mode to be used for the persistence unit.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                            &lt;/xsd:element&gt;
                            &lt;!-- **************************************************** --&gt;
                            &lt;xsd:element name="properties"
                                minOccurs="0"&gt;
                                &lt;xsd:annotation&gt;
                                    &lt;xsd:documentation&gt;
                                        A list of standard and vendor-specific properties
                                        and hints.
                                    &lt;/xsd:documentation&gt;
                                &lt;/xsd:annotation&gt;
                                &lt;xsd:complexType&gt;
                                    &lt;xsd:sequence&gt;
                                        &lt;xsd:element name="property"
                                            minOccurs="0" maxOccurs="unbounded"&gt;
                                            &lt;xsd:annotation&gt;
                                                &lt;xsd:documentation&gt;
                                                    A name-value pair.
                                                &lt;/xsd:documentation&gt;
                                            &lt;/xsd:annotation&gt;
                                            &lt;xsd:complexType&gt;
                                                &lt;xsd:attribute
                                                    name="name" type="xsd:string"
                                                    use="required" /&gt;
                                                &lt;xsd:attribute
                                                    name="value" type="xsd:string"
                                                    use="required" /&gt;
                                            &lt;/xsd:complexType&gt;
                                        &lt;/xsd:element&gt;
                                    &lt;/xsd:sequence&gt;
                                &lt;/xsd:complexType&gt;
                            &lt;/xsd:element&gt;
                        &lt;/xsd:sequence&gt;
                        &lt;!-- **************************************************** --&gt;
                        &lt;xsd:attribute name="name" type="xsd:string"
                            use="required"&gt;
                            &lt;xsd:annotation&gt;
                                &lt;xsd:documentation&gt;
                                    Name used in code to reference this persistence unit.
                                &lt;/xsd:documentation&gt;
                            &lt;/xsd:annotation&gt;
                        &lt;/xsd:attribute&gt;
                        &lt;!-- **************************************************** --&gt;
                        &lt;xsd:attribute name="transaction-type"
                            type="persistence:persistence-unit-transaction-type"&gt;
                            &lt;xsd:annotation&gt;
                                &lt;xsd:documentation&gt;
                                    Type of transactions used by EntityManagers from this
                                    persistence unit.
                                &lt;/xsd:documentation&gt;
                            &lt;/xsd:annotation&gt;
                        &lt;/xsd:attribute&gt;
                    &lt;/xsd:complexType&gt;
                &lt;/xsd:element&gt;
            &lt;/xsd:sequence&gt;
            &lt;xsd:attribute name="version" type="persistence:versionType"
                fixed="2.0" use="required" /&gt;
        &lt;/xsd:complexType&gt;
    &lt;/xsd:element&gt;
    &lt;!-- **************************************************** --&gt;
    &lt;xsd:simpleType name="persistence-unit-transaction-type"&gt;
        &lt;xsd:annotation&gt;
            &lt;xsd:documentation&gt;
                public enum PersistenceUnitTransactionType {JTA, RESOURCE_LOCAL};
            &lt;/xsd:documentation&gt;
        &lt;/xsd:annotation&gt;
        &lt;xsd:restriction base="xsd:token"&gt;
            &lt;xsd:enumeration value="JTA" /&gt;
            &lt;xsd:enumeration value="RESOURCE_LOCAL" /&gt;
        &lt;/xsd:restriction&gt;
    &lt;/xsd:simpleType&gt;
    &lt;!-- **************************************************** --&gt;
    &lt;xsd:simpleType name="persistence-unit-caching-type"&gt;
        &lt;xsd:annotation&gt;
            &lt;xsd:documentation&gt;
                public enum SharedCacheMode { ALL, NONE, ENABLE_SELECTIVE,
                DISABLE_SELECTIVE, UNSPECIFIED};
            &lt;/xsd:documentation&gt;
        &lt;/xsd:annotation&gt;
        &lt;xsd:restriction base="xsd:token"&gt;
            &lt;xsd:enumeration value="ALL" /&gt;
            &lt;xsd:enumeration value="NONE" /&gt;
            &lt;xsd:enumeration value="ENABLE_SELECTIVE" /&gt;
            &lt;xsd:enumeration value="DISABLE_SELECTIVE" /&gt;
            &lt;xsd:enumeration value="UNSPECIFIED" /&gt;
        &lt;/xsd:restriction&gt;
    &lt;/xsd:simpleType&gt;
    &lt;!-- **************************************************** --&gt;
    &lt;xsd:simpleType name="persistence-unit-validation-mode-type"&gt;
        &lt;xsd:annotation&gt;
            &lt;xsd:documentation&gt;
                public enum ValidationMode { AUTO, CALLBACK, NONE};
            &lt;/xsd:documentation&gt;
        &lt;/xsd:annotation&gt;
        &lt;xsd:restriction base="xsd:token"&gt;
            &lt;xsd:enumeration value="AUTO" /&gt;
            &lt;xsd:enumeration value="CALLBACK" /&gt;
            &lt;xsd:enumeration value="NONE" /&gt;
        &lt;/xsd:restriction&gt;
    &lt;/xsd:simpleType&gt;
&lt;/xsd:schema&gt;
</programlisting>
        <para>
The root element of a <filename>persistence.xml</filename> file is <literal>
persistence</literal>, which then contains one or more <literal>
persistence-unit</literal> definitions. The root element should include the
version attribute with the appropriate version, <literal>1.0</literal> for a
version 1.0 file and <literal>2.0</literal> for a version 2.0 file.  Each
persistence unit describes the configuration for the entity managers created by
the persistence unit's entity manager factory. The persistence unit can specify 
these elements and attributes.
        </para>
        <itemizedlist>
            <listitem>
                <para>
<literal>name</literal>: This is the name you pass to the <methodname>
Persistence.createEntityManagerFactory</methodname> methods described above. The
name attribute is required.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>transaction-type</literal>: Whether to use managed
(<literal>JTA</literal>) or local (<literal>RESOURCE_LOCAL</literal>)
transaction management.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>provider</literal>: If you are using a third-party JPA vendor, this
element names its implementation of the
<ulink url="http://download.oracle.com/javaee/6/api/javax/persistence/spi/PersistenceProvider.html">
<classname>PersistenceProvider</classname></ulink> bootstrapping interface.
                </para>
                <note>
                    <para>
Set the <literal>provider</literal> to <classname>
org.apache.openjpa.persistence.PersistenceProviderImpl</classname> to use
OpenJPA.
                    </para>
                </note>
            </listitem>
            <listitem>
                <para>
<literal>jta-data-source</literal>: The JNDI name of a JDBC <classname>
DataSource</classname> that is automatically enlisted in JTA transactions. This
may be an XA <classname>DataSource</classname>.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>non-jta-data-source</literal>: The JNDI name of a JDBC <classname>
DataSource</classname> that is not enlisted in JTA transactions.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>mapping-file</literal>*: The resource names of XML mapping files for
entities and embeddable classes. You can also specify mapping information in an
<filename>orm.xml</filename> file in your <filename>META-INF</filename>
directory. If present, the <filename>orm.xml</filename> mapping file will be
read automatically.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>jar-file</literal>*: The names of jar files containing entities and
embeddable classes. The implementation will scan the jar for annotated classes.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>class</literal>*: The class names of entities and embeddable classes.
                </para>
            </listitem>
            <listitem>
                <para>
<literal>properties</literal>: This element contains nested <literal>property
</literal> elements used to specify vendor-specific settings. Each <literal>
property</literal> has a name attribute and a value attribute.
                </para>
                <note>
                    <para>
The Reference Guide's <xref linkend="ref_guide_conf"/> describes OpenJPA's
configuration properties.
                    </para>
                </note>
            </listitem>
        </itemizedlist>
        <para>
Here is a typical <filename>persistence.xml</filename> file for a non-EE
environment:
        </para>
        <example id="jpa_overview_persistence_xmlex">
            <title>
                persistence.xml
            </title>
<programlisting>
&lt;?xml version="1.0"?&gt;
&lt;persistence version="1.0"&gt;
  &lt;persistence-unit name="openjpa"&gt;
    &lt;provider&gt;org.apache.openjpa.persistence.PersistenceProviderImpl&lt;/provider&gt;
    &lt;class&gt;tutorial.Animal&lt;/class&gt;
    &lt;class&gt;tutorial.Dog&lt;/class&gt;
    &lt;class&gt;tutorial.Rabbit&lt;/class&gt;
    &lt;class&gt;tutorial.Snake&lt;/class&gt;
    &lt;properties&gt;
      &lt;property name="openjpa.ConnectionURL" value="jdbc:hsqldb:tutorial_database"/&gt;
      &lt;property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver"/&gt;
      &lt;property name="openjpa.ConnectionUserName" value="sa"/&gt;
      &lt;property name="openjpa.ConnectionPassword" value=""/&gt;
      &lt;property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/&gt;
    &lt;/properties&gt;
  &lt;/persistence-unit&gt;
&lt;/persistence&gt;
</programlisting>
        </example>
    </section>
    <section id="jpa_overview_persistence_use">
        <title>
            Non-EE Use
        </title>
        <para>
The example below demonstrates the <classname>Persistence</classname> class in
action. You will typically execute code like this on application startup, then
cache the resulting factory for future use. This bootstrapping code is only
necessary in non-EE environments; in an EE environment <classname>
EntityManagerFactories</classname> are typically injected.
        </para>
        <example id="jpa_overview_persistence_getemfactory">
            <title>
                Obtaining an EntityManagerFactory
            </title>
<programlisting>
// if your persistence.xml file does not contain all settings already, you
// can add vendor settings to a map
Properties props = new Properties();
...

// create the factory defined by the "openjpa" entity-manager entry
EntityManagerFactory emf = Persistence.createEntityManagerFactory("openjpa", props);
</programlisting>
        </example>
    </section>
</chapter>
