You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by st...@apache.org on 2015/06/01 22:19:02 UTC

svn commit: r953480 [17/37] - in /websites/production/openjpa/content/builds/2.4.0: ./ apache-openjpa/ apache-openjpa/docs/

Added: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans.html
==============================================================================
--- websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans.html (added)
+++ websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans.html Mon Jun  1 20:19:00 2015
@@ -0,0 +1,171 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;9.&nbsp; Transaction</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="manual.html" title="Apache OpenJPA 2.4 User's Guide"><link rel="up" href="jpa_overview.html" title="Part&nbsp;2.&nbsp;Java Persistence API"><link rel="prev" href="jpa_overview_em_closing.html" title="9.&nbsp; Closing"><link rel="next" href="jpa_overview_trans_local.html" title="2.&nbsp; The EntityTransaction Interface"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;9.&nbsp;
+        Transaction
+    </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="jpa_overview_em_closing.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;2.&nbsp;Java Persistence API</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="jpa_overview_trans_local.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;9.&nbsp; Transaction" id="jpa_overview_trans"><div class="titlepage"><div><div><h2 class="title">Chapter&nbsp;9.&nbsp;
+        Transaction
+    </h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="jpa_overview_trans.html#jpa_overview_trans_types">1. 
+            Transaction Types
+        </a></span></dt><dt><span class="section"><a href="jpa_overview_trans_local.html">2. 
+            The EntityTransaction Interface
+        </a></span></dt></dl></div>
+    
+    <a class="indexterm" name="d5e2793"></a>
+    <p>
+Transactions are critical to maintaining data integrity. They are used to group
+operations into units of work that act in an all-or-nothing fashion.
+Transactions have the following qualities:
+    </p>
+    <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e2800"></a>
+            <a class="indexterm" name="d5e2803"></a>
+<span class="emphasis"><em>Atomicity</em></span>. Atomicity refers to the all-or-nothing property
+of transactions. Either every data update in the transaction completes
+successfully, or they all fail, leaving the datastore in its original state. A
+transaction cannot be only partially successful.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e2809"></a>
+            <a class="indexterm" name="d5e2812"></a>
+<span class="emphasis"><em>Consistency</em></span>. Each transaction takes the datastore from one
+consistent state to another consistent state.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e2818"></a>
+            <a class="indexterm" name="d5e2821"></a>
+<span class="emphasis"><em>Isolation</em></span>. Transactions are isolated from each other. When
+you are reading persistent data in one transaction, you cannot "see" the changes
+that are being made to that data in other transactions. Similarly, the updates
+you make in one transaction cannot conflict with updates made in concurrent
+transactions. The form of conflict resolution employed depends on whether you
+are using pessimistic or optimistic transactions. Both types are described later
+in this chapter.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e2827"></a>
+            <a class="indexterm" name="d5e2830"></a>
+<span class="emphasis"><em>Durability</em></span>. The effects of successful transactions are
+durable; the updates made to persistent data last for the lifetime of the
+datastore.
+            </p>
+        </li></ul></div>
+    <p>
+    <a class="indexterm" name="d5e2835"></a>
+    <a class="indexterm" name="d5e2838"></a>
+Together, these qualities are called the ACID properties of transactions. To
+understand why these properties are so important to maintaining data integrity,
+consider the following example:
+    </p>
+    <p>
+Suppose you create an application to manage bank accounts. The application
+includes a method to transfer funds from one user to another, and it looks
+something like this:
+    </p>
+<pre class="programlisting">
+public void transferFunds(User from, User to, double amnt) {
+    from.decrementAccount(amnt);
+    to.incrementAccount(amnt);
+}
+</pre>
+    <p>
+Now suppose that user Alice wants to transfer 100 dollars to user Bob. No
+problem; you simply invoke your <code class="methodname">transferFunds</code> method,
+supplying Alice in the <code class="literal">from</code> parameter, Bob in the <code class="literal">
+to</code> parameter, and <code class="literal">100.00</code> as the <code class="literal">amnt
+</code>. The first line of the method is executed, and 100 dollars is
+subtracted from Alice's account. But then, something goes wrong. An unexpected
+exception occurs, or the hardware fails, and your method never completes.
+    </p>
+    <p>
+You are left with a situation in which the 100 dollars has simply disappeared.
+Thanks to the first line of your method, it is no longer in Alice's account, and
+yet it was never transferred to Bob's account either. The datastore is in an
+inconsistent state.
+    </p>
+    <p>
+The importance of transactions should now be clear. If the two lines of the
+<code class="methodname">transferFunds</code> method had been placed together in a
+transaction, it would be impossible for only the first line to succeed. Either
+the funds would be transferred properly or they would not be transferred at all,
+and an exception would be thrown. Money could never vanish into thin air, and
+the data store could never get into an inconsistent state.
+    </p>
+    <div class="section" title="1.&nbsp; Transaction Types"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="jpa_overview_trans_types">1.&nbsp;
+            Transaction Types
+        </h2></div></div></div>
+        
+        <a class="indexterm" name="d5e2854"></a>
+        <p>
+There are two major types of transactions: pessimistic transactions and
+optimistic transactions. Each type has both advantages and disadvantages.
+        </p>
+        <p>
+        <a class="indexterm" name="d5e2859"></a>
+        <a class="indexterm" name="d5e2862"></a>
+        <a class="indexterm" name="d5e2865"></a>
+Pessimistic transactions generally lock the datastore records they act on,
+preventing other concurrent transactions from using the same data. This avoids
+conflicts between transactions, but consumes database resources. Additionally,
+locking records can result in <span class="emphasis"><em>deadlock</em></span>, a situation in
+which two transactions are both waiting for the other to release its locks
+before completing. The results of a deadlock are datastore-dependent; usually
+one transaction is forcefully rolled back after some specified timeout interval,
+and an exception is thrown.
+        </p>
+        <p>
+        <a class="indexterm" name="d5e2870"></a>
+        <a class="indexterm" name="d5e2873"></a>
+This document will often use the term <span class="emphasis"><em>datastore</em></span> transaction
+in place of <span class="emphasis"><em>pessimistic</em></span> transaction. This is to acknowledge
+that some datastores do not support pessimistic semantics, and that the exact
+meaning of a non-optimistic JPA transaction is dependent on the datastore. Most
+of the time, a datastore transaction is equivalent to a pessimistic transaction.
+        </p>
+        <p>
+        <a class="indexterm" name="d5e2879"></a>
+        <a class="indexterm" name="d5e2882"></a>
+Optimistic transactions consume less resources than pessimistic/datastore
+transactions, but only at the expense of reliability. Because optimistic
+transactions do not lock datastore records, two transactions might change the
+same persistent information at the same time, and the conflict will not be
+detected until the second transaction attempts to flush or commit. At this time,
+the second transaction will realize that another transaction has concurrently
+modified the same records (usually through a timestamp or versioning system),
+and will throw an appropriate exception. Note that optimistic transactions still
+maintain data integrity; they are simply more likely to fail in heavily
+concurrent situations.
+        </p>
+        <p>
+Despite their drawbacks, optimistic transactions are the best choice for most
+applications. They offer better performance, better scalability, and lower risk
+of hanging due to deadlock.
+        </p>
+        <div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
+            <p>
+OpenJPA uses optimistic semantics by default, but supports both optimistic and
+datastore transactions. OpenJPA also offers advanced locking and versioning APIs
+for fine-grained control over database resource allocation and object
+versioning. See <a class="xref" href="ref_guide_locking.html" title="3.&nbsp; Object Locking">Section&nbsp;3, &#8220;
+            Object Locking
+        &#8221;</a> of the Reference Guide for 
+details on locking. <a class="xref" href="jpa_overview_meta_field.html#jpa_overview_meta_version" title="2.6.&nbsp; Version">Section&nbsp;2.6, &#8220;
+                Version
+            &#8221;</a>
+of this document covers standard object versioning, while
+<a class="xref" href="ref_guide_mapping_jpa.html" title="7.&nbsp; Additional JPA Mappings">Section&nbsp;7, &#8220;
+            Additional JPA Mappings
+        &#8221;</a> of the Reference Guide discusses
+additional versioning strategies available in OpenJPA.
+            </p>
+        </div>
+    </div>
+    
+</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="jpa_overview_em_closing.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="jpa_overview.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="jpa_overview_trans_local.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9.&nbsp;
+            Closing
+        &nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;2.&nbsp;
+            The EntityTransaction Interface
+        </td></tr></table></div></body></html>
\ No newline at end of file

Propchange: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans_local.html
==============================================================================
--- websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans_local.html (added)
+++ websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans_local.html Mon Jun  1 20:19:00 2015
@@ -0,0 +1,85 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.&nbsp; The EntityTransaction Interface</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="manual.html" title="Apache OpenJPA 2.4 User's Guide"><link rel="up" href="jpa_overview_trans.html" title="Chapter&nbsp;9.&nbsp; Transaction"><link rel="prev" href="jpa_overview_trans.html" title="Chapter&nbsp;9.&nbsp; Transaction"><link rel="next" href="jpa_overview_query.html" title="Chapter&nbsp;10.&nbsp; JPA Query"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.&nbsp;
+            The EntityTransaction Interface
+        </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="jpa_overview_trans.html">Prev</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;9.&nbsp;
+        Transaction
+    </th><td width="20%" align="right">&nbsp;<a accesskey="n" href="jpa_overview_query.html">Next</a></td></tr></table><hr></div><div class="section" title="2.&nbsp; The EntityTransaction Interface"><div class="titlepage"><div><div><h2 class="title" style="clear: both" id="jpa_overview_trans_local">2.&nbsp;
+            The EntityTransaction Interface
+        </h2></div></div></div>
+        
+        <a class="indexterm" name="d5e2893"></a>
+        <div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="129"><tr><td><img src="img/jpa-transaction.png"></td></tr></table></div>
+        <p>
+JPA integrates with your container's <span class="emphasis"><em>managed</em></span> transactions,
+allowing you to use the container's declarative transaction demarcation and its
+Java Transaction API (JTA) implementation for transaction management. Outside of
+a container, though, you must demarcate transactions manually through JPA. The
+<code class="classname">EntityTransaction</code> interface controls unmanaged
+transactions in JPA.
+        </p>
+<pre class="programlisting">
+public void begin();
+public void commit();
+public void rollback();
+</pre>
+        <p>
+        <a class="indexterm" name="d5e2904"></a>
+        <a class="indexterm" name="d5e2907"></a>
+        <a class="indexterm" name="d5e2910"></a>
+        <a class="indexterm" name="d5e2913"></a>
+        <a class="indexterm" name="d5e2916"></a>
+The <code class="methodname">begin</code>, <code class="methodname">commit</code>, and
+<code class="methodname">rollback</code> methods demarcate transaction boundaries. The
+methods should be self-explanatory: <code class="methodname">begin</code> starts a
+transaction, <code class="methodname">commit</code> attempts to commit the
+transaction's changes to the datastore, and <code class="methodname">rollback</code>
+aborts the transaction, in which case the datastore is "rolled back" to its
+previous state. JPA implementations will automatically roll back transactions if
+any exception is thrown during the commit process.
+        </p>
+        <p>
+Unless you are using an extended persistence context, committing or rolling back
+also ends the persistence context. All managed entities will be detached from the
+<code class="classname">EntityManager</code>.
+        </p>
+<pre class="programlisting">
+public boolean isActive();
+</pre>
+        <p>
+        <a class="indexterm" name="d5e2929"></a>
+Finally, the <code class="methodname">isActive</code> method returns <code class="literal">true
+</code> if the transaction is in progress (<code class="methodname">begin</code>
+has been called more recently than <code class="methodname">commit</code> or
+<code class="methodname">rollback</code>), and <code class="literal">false</code> otherwise.
+        </p>
+        <div class="example"><a name="jpa_overview_trans_group"></a><p class="title"><b>Example&nbsp;9.1.&nbsp;
+                Grouping Operations with Transactions
+            </b></p><div class="example-contents">
+            
+<pre class="programlisting">
+public void transferFunds(EntityManager em, User from, User to, double amnt) {
+    // note: it would be better practice to move the transaction demarcation
+    // code out of this method, but for the purposes of example...
+    Transaction trans = em.getTransaction();
+    trans.begin();
+    try
+    {
+        from.decrementAccount(amnt);
+        to.incrementAccount(amnt);
+        trans.commit();
+    }
+    catch (RuntimeException re)
+    {
+        if (trans.isActive())
+            trans.rollback();   // or could attempt to fix error and retry
+        throw re;
+    }
+}
+</pre>
+        </div></div><br class="example-break">
+    </div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="jpa_overview_trans.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="jpa_overview_trans.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="jpa_overview_query.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;9.&nbsp;
+        Transaction
+    &nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;10.&nbsp;
+        JPA Query
+    </td></tr></table></div></body></html>
\ No newline at end of file

Propchange: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_trans_local.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_why.html
==============================================================================
--- websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_why.html (added)
+++ websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_why.html Mon Jun  1 20:19:00 2015
@@ -0,0 +1,424 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;2.&nbsp; Why JPA?</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="manual.html" title="Apache OpenJPA 2.4 User's Guide"><link rel="up" href="jpa_overview.html" title="Part&nbsp;2.&nbsp;Java Persistence API"><link rel="prev" href="jpa_overview_intro_transpers.html" title="2.&nbsp; Lightweight Persistence"><link rel="next" href="jpa_overview_arch.html" title="Chapter&nbsp;3.&nbsp; Java Persistence API Architecture"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;2.&nbsp;
+        Why JPA?
+    </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="jpa_overview_intro_transpers.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;2.&nbsp;Java Persistence API</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="jpa_overview_arch.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter&nbsp;2.&nbsp; Why JPA?" id="jpa_overview_why"><div class="titlepage"><div><div><h2 class="title">Chapter&nbsp;2.&nbsp;
+        Why JPA?
+    </h2></div></div></div>
+    
+    <a class="indexterm" name="d5e127"></a>
+    <p>
+Java developers who need to store and retrieve persistent data already have
+several options available to them: serialization, JDBC, JDO, proprietary
+object-relational mapping tools, object databases, and EJB 2 entity beans. Why
+introduce yet another persistence framework? The answer to this question is that
+with the exception of JDO, each of the aforementioned persistence solutions has
+severe limitations. JPA attempts to overcome these limitations, as illustrated
+by the table below.
+    </p>
+    <div class="table"><a name="d5e131"></a><p class="title"><b>Table&nbsp;2.1.&nbsp;
+            Persistence Mechanisms
+        </b></p><div class="table-contents">
+        
+        <table summary="&#xA;            Persistence Mechanisms&#xA;        " border="1"><colgroup><col align="left" class="sup"><col align="left" class="ser"><col align="left" class="jdbc"><col align="left" class="or"><col align="left" class="objdb"><col align="left" class="ejb2"><col align="left" class="jdo"><col align="left" class="jpa"></colgroup><thead><tr><th align="left">
+                        Supports:
+                    </th><th align="left">
+                        Serialization
+                    </th><th align="left">
+                        JDBC
+                    </th><th align="left">
+                        ORM
+                    </th><th align="left">
+                        ODB
+                    </th><th align="left">
+                        EJB 2
+                    </th><th align="left">
+                        JDO
+                    </th><th align="left">
+                        JPA
+                    </th></tr></thead><tbody><tr><td align="left">
+                        Java Objects
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Advanced OO Concepts
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Transactional Integrity
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Concurrency
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Large Data Sets
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Existing Schema
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Relational and Non-Relational Stores
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td></tr><tr><td align="left">
+                        Queries
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Strict Standards / Portability
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr><tr><td align="left">
+                        Simplicity
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        No
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td><td align="left">
+                        <span class="bold"><strong>
+                            Yes
+                        </strong></span>
+                    </td></tr></tbody></table>
+    </div></div><br class="table-break">
+    <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e298"></a>
+            <a class="indexterm" name="d5e300"></a>
+<span class="emphasis"><em>Serialization</em></span> is Java's built-in mechanism for transforming
+an object graph into a series of bytes, which can then be sent over the network
+or stored in a file. Serialization is very easy to use, but it is also very
+limited. It must store and retrieve the entire object graph at once, making it
+unsuitable for dealing with large amounts of data. It cannot undo changes that
+are made to objects if an error occurs while updating information, making it
+unsuitable for applications that require strict data integrity. Multiple threads
+or programs cannot read and write the same serialized data concurrently without
+conflicting with each other. It provides no query capabilities. All these
+factors make serialization useless for all but the most trivial persistence
+needs.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e306"></a>
+            <a class="indexterm" name="d5e309"></a>
+            <a class="indexterm" name="d5e311"></a>
+Many developers use the <span class="emphasis"><em>Java Database Connectivity</em></span> (JDBC)
+APIs to manipulate persistent data in relational databases. JDBC overcomes most
+of the shortcomings of serialization: it can handle large amounts of data, has
+mechanisms to ensure data integrity, supports concurrent access to information,
+and has a sophisticated query language in SQL. Unfortunately, JDBC does not
+duplicate serialization's ease of use. The relational paradigm used by JDBC was
+not designed for storing objects, and therefore forces you to either abandon
+object-oriented programming for the portions of your code that deal with
+persistent data, or to find a way of mapping object-oriented concepts like
+inheritance to relational databases yourself.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e317"></a>
+            <a class="indexterm" name="d5e320"></a>
+            <a class="indexterm" name="d5e322"></a>
+There are many proprietary software products that can perform the mapping
+between objects and relational database tables for you. These <span class="emphasis"><em>
+object-relational mapping</em></span> (ORM) frameworks allow you to focus on the
+object model and not concern yourself with the mismatch between the
+object-oriented and relational paradigms. Unfortunately, each of these product
+has its own set of APIs. Your code becomes tied to the proprietary interfaces of
+a single vendor. If the vendor raises prices, fails to fix show-stopping bugs,
+or falls behind in features, you cannot switch to another product without
+rewriting all of your persistence code. This is referred to as vendor lock-in.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e328"></a>
+            <a class="indexterm" name="d5e331"></a>
+            <a class="indexterm" name="d5e333"></a>
+            <a class="indexterm" name="d5e336"></a>
+Rather than map objects to relational databases, some software companies have
+developed a form of database designed specifically to store objects. These
+<span class="emphasis"><em>object databases</em></span> (ODBs) are often much easier to use than
+object-relational mapping software. The Object Database Management Group (ODMG)
+was formed to create a standard API for accessing object databases; few object
+database vendors, however, comply with the ODMG's recommendations. Thus, vendor
+lock-in plagues object databases as well. Many companies are also hesitant to
+switch from tried-and-true relational systems to the relatively unknown object
+database technology. Fewer data-analysis tools are available for object database
+systems, and there are vast quantities of data already stored in older
+relational databases. For all of these reasons and more, object databases have
+not caught on as well as their creators hoped.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e341"></a>
+            <a class="indexterm" name="d5e344"></a>
+            <a class="indexterm" name="d5e346"></a>
+The Enterprise Edition of the Java platform introduced entity Enterprise Java
+Beans (EJBs). EJB 2.x entities are components that represent persistent
+information in a datastore. Like object-relational mapping solutions, EJB 2.x
+entities provide an object-oriented view of persistent data. Unlike
+object-relational software, however, EJB 2.x entities are not limited to
+relational databases; the persistent information they represent may come from an
+Enterprise Information System (EIS) or other storage device. Also, EJB 2.x
+entities use a strict standard, making them portable across vendors.
+Unfortunately, the EJB 2.x standard is somewhat limited in the object-oriented
+concepts it can represent. Advanced features like inheritance, polymorphism, and
+complex relations are absent. Additionally, EBJ 2.x entities are difficult to
+code, and they require heavyweight and often expensive application servers to
+run.
+            </p>
+        </li><li class="listitem">
+            <p>
+            <a class="indexterm" name="d5e351"></a>
+            <a class="indexterm" name="d5e353"></a>
+The JDO specification uses an API that is strikingly similar to JPA. JDO,
+however, supports non-relational databases, a feature that some argue dilutes
+the specification.
+            </p>
+        </li></ul></div>
+    <p>
+    <a class="indexterm" name="d5e357"></a>
+JPA combines the best features from each of the persistence mechanisms listed
+above. Creating entities under JPA is as simple as creating serializable
+classes. JPA supports the large data sets, data consistency, concurrent use, and
+query capabilities of JDBC. Like object-relational software and object
+databases, JPA allows the use of advanced object-oriented concepts such as
+inheritance. JPA avoids vendor lock-in by relying on a strict specification like
+JDO and EJB 2.x entities. JPA focuses on relational databases. And like JDO, JPA
+is extremely easy to use.
+    </p>
+    <div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
+        <p>
+OpenJPA typically stores data in relational databases, but can be customized for
+use with non-relational datastores as well.
+        </p>
+    </div>
+    <p>
+JPA is not ideal for every application. For many applications, though, it
+provides an exciting alternative to other persistence mechanisms.
+    </p>
+</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="jpa_overview_intro_transpers.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="jpa_overview.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="jpa_overview_arch.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.&nbsp;
+            Lightweight Persistence
+        &nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;3.&nbsp;
+        Java Persistence API Architecture
+    </td></tr></table></div></body></html>
\ No newline at end of file

Propchange: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_overview_why.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_resources.html
==============================================================================
--- websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_resources.html (added)
+++ websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_resources.html Mon Jun  1 20:19:00 2015
@@ -0,0 +1,30 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Appendix&nbsp;1.&nbsp; JPA Resources</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><link rel="home" href="manual.html" title="Apache OpenJPA 2.4 User's Guide"><link rel="up" href="appendices.html" title="Part&nbsp;4.&nbsp;Appendices"><link rel="prev" href="appendices.html" title="Part&nbsp;4.&nbsp;Appendices"><link rel="next" href="supported_databases.html" title="Appendix&nbsp;2.&nbsp; Supported Databases"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix&nbsp;1.&nbsp;
+        JPA Resources
+    </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendices.html">Prev</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;4.&nbsp;Appendices</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="supported_databases.html">Next</a></td></tr></table><hr></div><div class="appendix" title="Appendix&nbsp;1.&nbsp; JPA Resources" id="jpa_resources"><div class="titlepage"><div><div><h2 class="title">Appendix&nbsp;1.&nbsp;
+        JPA Resources
+    </h2></div></div></div>
+    
+    <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+            <p>
+<a class="ulink" href="http://www.jcp.org/en/jsr/detail?id=317" target="_top">
+Java Persistence 2.0 page</a>
+            </p>
+        </li><li class="listitem">
+            <p>
+<a class="ulink" href="http://jcp.org/en/jsr/detail?id=318" target="_top">Enterprise JavaBeans 3.1 page</a>
+            </p>
+        </li><li class="listitem">
+            <p>
+<a class="ulink" href="http://download.oracle.com/javaee/6/api/index.html" target="_top">
+javax.persistence Javadoc</a>
+            </p>
+        </li><li class="listitem">
+            <p>
+<a class="ulink" href="../javadoc/index.html" target="_top">OpenJPA Javadoc</a>
+            </p>
+        </li></ul></div>
+</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendices.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="appendices.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="supported_databases.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part&nbsp;4.&nbsp;Appendices&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;Appendix&nbsp;2.&nbsp;
+        Supported Databases
+    </td></tr></table></div></body></html>
\ No newline at end of file

Propchange: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/jpa_resources.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/main.html
==============================================================================
--- websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/main.html (added)
+++ websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/main.html Mon Jun  1 20:19:00 2015
@@ -0,0 +1,41 @@
+<!--
+ 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.   
+-->
+
+<!-- This HTML uses Frames for navigating the manual from TOC easier         --> 
+<!-- The BASE TARGET frame is named 'display'. The same moniker appears in   -->
+<!-- manual-xhtml-chunk.xsl parameter 'html.base'.                           -->
+<!-- That XSL parameter introduces a &lt;base href="display&gt; tag in the   -->
+<!-- &lt;head&gt; section of the generated TOC index.html. As I do not know  -->
+<!-- how to tweak xsl parameter to introduce a &lt;base target="display"&gt; -->
+<!-- a small hack in pom.xml replaces 'base href' token to 'base target'     -->
+<!-- in the generated TOC index.html.                                        -->
+<HTML>
+<HEAD> 
+   <BASE TARGET="display">
+   </BASE>
+</HEAD> 
+<FRAMESET COLS="30%,70%">
+   <FRAME NAME="navigator" SRC="index.html">
+   <FRAME NAME="display"   SRC="openjpa_intro.html">
+</FRAMESET>
+<NOFRAMES>
+   Please click <A HREF="index.html">here</A> for OpenJPA documentation because
+   this browser does not support frames.
+</NOFRAMES>
+</HTML>
\ No newline at end of file

Propchange: websites/production/openjpa/content/builds/2.4.0/apache-openjpa/docs/main.html
------------------------------------------------------------------------------
    svn:eol-style = native