<?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.
-->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
    <!ENTITY openjpa-version "VERSION">

    <!ENTITY openjpa_intro.xml SYSTEM "openjpa_intro.xml">
    <!ENTITY openjpa_legal.xml SYSTEM "openjpa_legal.xml">
    <!ENTITY jpa_overview_intro.xml SYSTEM "jpa_overview_intro.xml">
    <!ENTITY jpa_overview_why.xml SYSTEM "jpa_overview_why.xml">
    <!ENTITY jpa_overview_arch.xml SYSTEM "jpa_overview_arch.xml">
    <!ENTITY jpa_overview_pc.xml SYSTEM "jpa_overview_pc.xml">
    <!ENTITY jpa_overview_meta.xml SYSTEM "jpa_overview_meta.xml">
    <!ENTITY jpa_overview_persistence.xml SYSTEM "jpa_overview_persistence.xml">
    <!ENTITY jpa_overview_emfactory.xml SYSTEM "jpa_overview_emfactory.xml">
    <!ENTITY jpa_overview_em.xml SYSTEM "jpa_overview_em.xml">
    <!ENTITY jpa_overview_trans.xml SYSTEM "jpa_overview_trans.xml">
    <!ENTITY jpa_overview_query.xml SYSTEM "jpa_overview_query.xml">
    <!ENTITY jpa_overview_criteria.xml SYSTEM "jpa_overview_criteria.xml">
    <!ENTITY jpa_overview_sqlquery.xml SYSTEM "jpa_overview_sqlquery.xml">
    <!ENTITY jpa_overview_mapping.xml SYSTEM "jpa_overview_mapping.xml">
    <!ENTITY jpa_overview_conclusion.xml SYSTEM "jpa_overview_conclusion.xml">
    <!ENTITY jpa_tutorials.xml SYSTEM "jpa_tutorials.xml">
    <!ENTITY ref_guide_intro.xml SYSTEM "ref_guide_intro.xml">
    <!ENTITY ref_guide_conf.xml SYSTEM "ref_guide_conf.xml">
    <!ENTITY ref_guide_logging.xml SYSTEM "ref_guide_logging.xml">
    <!ENTITY ref_guide_dbsetup.xml SYSTEM "ref_guide_dbsetup.xml">
    <!ENTITY ref_guide_pc.xml SYSTEM "ref_guide_pc.xml">
    <!ENTITY ref_guide_meta.xml SYSTEM "ref_guide_meta.xml">
    <!ENTITY ref_guide_mapping.xml SYSTEM "ref_guide_mapping.xml">
    <!ENTITY ref_guide_deploy.xml SYSTEM "ref_guide_deploy.xml">
    <!ENTITY ref_guide_runtime.xml SYSTEM "ref_guide_runtime.xml">
    <!ENTITY ref_guide_caching.xml SYSTEM "ref_guide_caching.xml">
    <!ENTITY ref_guide_encryption.xml SYSTEM "ref_guide_encryption.xml">
    <!ENTITY ref_guide_remote.xml SYSTEM "ref_guide_remote.xml">
    <!ENTITY ref_guide_slice.xml SYSTEM "ref_guide_slice.xml">
    <!ENTITY ref_guide_integration.xml SYSTEM "ref_guide_integration.xml">
    <!ENTITY ref_guide_optimization.xml SYSTEM "ref_guide_optimization.xml">
    <!ENTITY ref_guide_instrumentation.xml SYSTEM "ref_guide_instrumentation.xml">
    <!ENTITY samples_guide.xml SYSTEM "samples_guide.xml">
    <!ENTITY jpa_resources.xml SYSTEM "jpa_resources.xml">
    <!ENTITY supported_databases.xml SYSTEM "supported_databases.xml">
    <!ENTITY migration_considerations.xml SYSTEM "migration_considerations.xml">
    <!ENTITY properties_info.xml SYSTEM "properties_info.xml">
]>
<book id="manual">
    <bookinfo>
        <title>Apache OpenJPA 3.2 User's Guide</title>
        <copyright>
            <year>2006-2021</year>
            <holder>The Apache Software Foundation</holder>
        </copyright>
        <releaseinfo>Built from OpenJPA version <?eval ${openjpa.version}?> revision <?eval ${buildNumber}?>.</releaseinfo>
        <pubdate>Last updated on <?eval ${timestamp}?>.</pubdate>
    </bookinfo>

    <part id="introduction">
        <title>Introduction</title>
        &openjpa_intro.xml;
        &openjpa_legal.xml;
    </part>

    <part id="jpa_overview">
        <title>Java Persistence API</title>
        &jpa_overview_intro.xml;
        &jpa_overview_why.xml;
        &jpa_overview_arch.xml;
        &jpa_overview_pc.xml;
        &jpa_overview_meta.xml;
        &jpa_overview_persistence.xml;
        &jpa_overview_emfactory.xml;
        &jpa_overview_em.xml;
        &jpa_overview_trans.xml;
        &jpa_overview_query.xml;
        &jpa_overview_criteria.xml;
        &jpa_overview_sqlquery.xml;
        &jpa_overview_mapping.xml;
        &jpa_overview_conclusion.xml;
    </part>

    <!--
    ### TUTORIAL
    <part id="tutorials">
        <title>Tutorials</title>
        &jpa_tutorials.xml;
    </part>
    -->

    <part id="ref_guide">
        <title>Reference Guide</title>
        &ref_guide_intro.xml;
        &ref_guide_conf.xml;
        &ref_guide_logging.xml;
        &ref_guide_dbsetup.xml;
        &ref_guide_pc.xml;
        &ref_guide_meta.xml;
        &ref_guide_mapping.xml;
        &ref_guide_deploy.xml;
        &ref_guide_runtime.xml;
        &ref_guide_caching.xml;
        &ref_guide_encryption.xml;
        &ref_guide_remote.xml;
        &ref_guide_slice.xml;
        &ref_guide_integration.xml;
        &ref_guide_optimization.xml;
        &ref_guide_instrumentation.xml;
    </part>

    <!--
    <part id="samples_guide_part">
        <title>Samples</title>
        &samples_guide.xml;
    </part>
    -->

    <part id="appendices">
        <title>Appendices</title>
        &jpa_resources.xml;
        &supported_databases.xml;
        &migration_considerations.xml;
    </part>
</book>
