You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by aw...@apache.org on 2006/08/24 22:41:14 UTC
svn commit: r434517 [10/23] - in /incubator/openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/meta/
openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/
openjpa-project/src/doc/manual/
Modified: incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_why.xml
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_why.xml?rev=434517&r1=434516&r2=434517&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_why.xml (original)
+++ incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_why.xml Thu Aug 24 13:41:12 2006
@@ -1,371 +1,665 @@
-
- <chapter id="jpa_overview_why">
- <title>Why JPA?</title>
- <indexterm zone="jpa_overview_why">
- <primary>JPA</primary>
- <secondary>why</secondary>
- </indexterm>
- <para>
- 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.
- </para>
- <table tocentry="1">
- <title>Persistence Mechanisms</title>
+<chapter id="jpa_overview_why">
+ <title>
+ Why JPA?
+ </title>
+ <indexterm zone="jpa_overview_why">
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ why
+ </secondary>
+ </indexterm>
+ <para>
+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.
+ </para>
+ <table tocentry="1">
+ <title>
+ Persistence Mechanisms
+ </title>
<tgroup cols="8" align="left" colsep="1" rowsep="1">
- <colspec colname="sup"/>
- <colspec colname="ser"/>
- <colspec colname="jdbc"/>
- <colspec colname="or"/>
- <colspec colname="objdb"/>
- <colspec colname="ejb2"/>
- <colspec colname="jdo"/>
- <colspec colname="ejb3"/>
- <thead>
- <row>
- <entry colname="sup">Supports:</entry>
- <entry colname="ser">Serialization</entry>
- <entry colname="jdbc">JDBC</entry>
- <entry colname="or">ORM</entry>
- <entry colname="objdb">ODB</entry>
- <entry colname="ejb2">EJB 2</entry>
- <entry colname="jdo">JDO</entry>
- <entry colname="ejb3">JPA</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry colname="sup">Java Objects</entry>
- <entry colname="ser">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdbc">No</entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Advanced OO Concepts</entry>
- <entry colname="ser">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdbc">No</entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">No</entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Transactional Integrity</entry>
- <entry colname="ser">No</entry>
- <entry colname="jdbc">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Concurrency</entry>
- <entry colname="ser">No</entry>
- <entry colname="jdbc">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Large Data Sets</entry>
- <entry colname="ser">No</entry>
- <entry colname="jdbc">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Existing Schema</entry>
- <entry colname="ser">No</entry>
- <entry colname="jdbc">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">No</entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">
+ <colspec colname="sup">
+ </colspec>
+ <colspec colname="ser">
+ </colspec>
+ <colspec colname="jdbc">
+ </colspec>
+ <colspec colname="or">
+ </colspec>
+ <colspec colname="objdb">
+ </colspec>
+ <colspec colname="ejb2">
+ </colspec>
+ <colspec colname="jdo">
+ </colspec>
+ <colspec colname="jpa">
+ </colspec>
+ <thead>
+ <row>
+ <entry colname="sup">
+ Supports:
+ </entry>
+ <entry colname="ser">
+ Serialization
+ </entry>
+ <entry colname="jdbc">
+ JDBC
+ </entry>
+ <entry colname="or">
+ ORM
+ </entry>
+ <entry colname="objdb">
+ ODB
+ </entry>
+ <entry colname="ejb2">
+ EJB 2
+ </entry>
+ <entry colname="jdo">
+ JDO
+ </entry>
+ <entry colname="jpa">
+ JPA
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry colname="sup">
+ Java Objects
+ </entry>
+ <entry colname="ser">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdbc">
+ No
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Advanced OO Concepts
+ </entry>
+ <entry colname="ser">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdbc">
+ No
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ No
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Transactional Integrity
+ </entry>
+ <entry colname="ser">
+ No
+ </entry>
+ <entry colname="jdbc">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Concurrency
+ </entry>
+ <entry colname="ser">
+ No
+ </entry>
+ <entry colname="jdbc">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Large Data Sets
+ </entry>
+ <entry colname="ser">
+ No
+ </entry>
+ <entry colname="jdbc">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Existing Schema
+ </entry>
+ <entry colname="ser">
+ No
+ </entry>
+ <entry colname="jdbc">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ No
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+
Relational and Non-Relational Stores
- </entry>
- <entry colname="ser">No</entry>
- <entry colname="jdbc">No</entry>
- <entry colname="or">No</entry>
- <entry colname="objdb">No</entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">No</entry>
- </row>
- <row>
- <entry colname="sup">Queries</entry>
- <entry colname="ser">No</entry>
- <entry colname="jdbc">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Strict Standards / Portability</entry>
- <entry colname="ser">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdbc">No</entry>
- <entry colname="or">No</entry>
- <entry colname="objdb">No</entry>
- <entry colname="ejb2">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- <row>
- <entry colname="sup">Simplicity</entry>
- <entry colname="ser">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="jdbc">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="or">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="objdb">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb2">No</entry>
- <entry colname="jdo">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- <entry colname="ejb3">
- <emphasis role="bold">Yes</emphasis>
- </entry>
- </row>
- </tbody>
+
+ </entry>
+ <entry colname="ser">
+ No
+ </entry>
+ <entry colname="jdbc">
+ No
+ </entry>
+ <entry colname="or">
+ No
+ </entry>
+ <entry colname="objdb">
+ No
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ No
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Queries
+ </entry>
+ <entry colname="ser">
+ No
+ </entry>
+ <entry colname="jdbc">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Strict Standards / Portability
+ </entry>
+ <entry colname="ser">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdbc">
+ No
+ </entry>
+ <entry colname="or">
+ No
+ </entry>
+ <entry colname="objdb">
+ No
+ </entry>
+ <entry colname="ejb2">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry colname="sup">
+ Simplicity
+ </entry>
+ <entry colname="ser">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jdbc">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="or">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="objdb">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="ejb2">
+ No
+ </entry>
+ <entry colname="jdo">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ <entry colname="jpa">
+ <emphasis role="bold">
+ Yes
+ </emphasis>
+ </entry>
+ </row>
+ </tbody>
</tgroup>
- </table>
- <itemizedlist>
+ </table>
+ <itemizedlist>
<listitem>
- <para><indexterm><primary>serialization</primary></indexterm><indexterm><primary>JPA</primary><secondary>vs serialization</secondary></indexterm><emphasis>Serialization</emphasis> 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.
- </para>
+ <para>
+ <indexterm>
+ <primary>
+ serialization
+ </primary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ vs serialization
+ </secondary>
+ </indexterm>
+<emphasis>Serialization</emphasis> 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.
+ </para>
</listitem>
<listitem>
- <para><indexterm><primary>Java Database Connectivity</primary><see>JDBC</see></indexterm><indexterm><primary>JDBC</primary></indexterm><indexterm><primary>JPA</primary><secondary>vs JDBC</secondary></indexterm>
- Many developers use the
- <emphasis>Java Database Connectivity</emphasis> (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.
- </para>
+ <para>
+ <indexterm>
+ <primary>
+ Java Database Connectivity
+ </primary>
+ <see>
+ JDBC
+ </see>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JDBC
+ </primary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ vs JDBC
+ </secondary>
+ </indexterm>
+Many developers use the <emphasis>Java Database Connectivity</emphasis> (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.
+ </para>
</listitem>
<listitem>
- <para><indexterm><primary>object-relational mapping</primary><see>ORM</see></indexterm><indexterm><primary>ORM</primary></indexterm><indexterm><primary>JPA</primary><secondary>vs ORM products</secondary></indexterm>
- There are many proprietary software products that can perform the
- mapping between objects and relational database tables for you.
- These <emphasis>object-relational mapping</emphasis> (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.
- </para>
+ <para>
+ <indexterm>
+ <primary>
+ object-relational mapping
+ </primary>
+ <see>
+ ORM
+ </see>
+ </indexterm>
+ <indexterm>
+ <primary>
+ ORM
+ </primary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ vs ORM products
+ </secondary>
+ </indexterm>
+There are many proprietary software products that can perform the mapping
+between objects and relational database tables for you. These <emphasis>
+object-relational mapping</emphasis> (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.
+ </para>
</listitem>
<listitem>
- <para><indexterm><primary>object database</primary><see>ODB</see></indexterm><indexterm><primary>ODB</primary></indexterm><indexterm><primary>JPA</primary><secondary>vs ODBs</secondary></indexterm><indexterm><primary>ODBMG</primary></indexterm>
- Rather than map objects to relational databases, some software
- companies have developed a form of database designed
- specifically to store objects. These
- <emphasis>object databases</emphasis> (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.
- </para>
+ <para>
+ <indexterm>
+ <primary>
+ object database
+ </primary>
+ <see>
+ ODB
+ </see>
+ </indexterm>
+ <indexterm>
+ <primary>
+ ODB
+ </primary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ vs ODBs
+ </secondary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ ODBMG
+ </primary>
+ </indexterm>
+Rather than map objects to relational databases, some software companies have
+developed a form of database designed specifically to store objects. These
+<emphasis>object databases</emphasis> (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.
+ </para>
</listitem>
<listitem>
- <para><indexterm><primary>Enterprise Java Beans</primary><see>EJB</see></indexterm><indexterm><primary>EJB</primary></indexterm><indexterm><primary>JPA</primary><secondary>vs EJB 2</secondary></indexterm>
- 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.
- </para>
+ <para>
+ <indexterm>
+ <primary>
+ Enterprise Java Beans
+ </primary>
+ <see>
+ EJB
+ </see>
+ </indexterm>
+ <indexterm>
+ <primary>
+ EJB
+ </primary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ vs EJB 2
+ </secondary>
+ </indexterm>
+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.
+ </para>
</listitem>
<listitem>
- <para><indexterm><primary>JDO</primary></indexterm><indexterm><primary>JPA</primary><secondary>vs JDO</secondary></indexterm>
- 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.
- </para>
+ <para>
+ <indexterm>
+ <primary>
+ JDO
+ </primary>
+ </indexterm>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ <secondary>
+ vs JDO
+ </secondary>
+ </indexterm>
+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.
+ </para>
</listitem>
- </itemizedlist>
- <para><indexterm><primary>JPA</primary></indexterm>
- 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.
- </para>
- <note>
+ </itemizedlist>
+ <para>
+ <indexterm>
+ <primary>
+ JPA
+ </primary>
+ </indexterm>
+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.
+ </para>
+ <note>
<para>
- OpenJPA typically stores data in relational databases, but can be
- customized for use with non-relational datastores as well.
+OpenJPA typically stores data in relational databases, but can be customized for
+use with non-relational datastores as well.
+ </para>
+ </note>
+ <para>
+JPA is not ideal for every application. For many applications, though, it
+provides an exciting alternative to other persistence mechanisms.
</para>
- </note>
- <para>
- JPA is not ideal for every application. For many applications,
- though, it provides an exciting alternative to other persistence mechanisms.
- </para>
- </chapter>
+</chapter>
Modified: incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_resources.xml
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_resources.xml?rev=434517&r1=434516&r2=434517&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_resources.xml (original)
+++ incubator/openjpa/trunk/openjpa-project/src/doc/manual/jpa_resources.xml Thu Aug 24 13:41:12 2006
@@ -1,39 +1,39 @@
-
- <appendix id="jpa_resources">
- <title>JPA Resources</title>
+<appendix id="jpa_resources">
+ <title>
+ JPA Resources
+ </title>
<itemizedlist>
- <listitem>
- <para>
- <ulink url="http://java.sun.com/aboutJava/communityprocess/jsr/jsr_220_dataobj.html">
- EJB 3 JSR page</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://java.sun.com/products/ejb">Sun EJB page</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://java.sun.com/javaee/5/docs/api/index.html">Locally mirrored
- javax.persistence Javadoc</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="../../api/index.html">OpenJPA API Javadoc</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="../apidocs/index.html">Full OpenJPA Javadoc</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="Persistence.pdf">Locally mirrored JPA
- specification</ulink>
- </para>
- </listitem>
+ <listitem>
+ <para>
+<ulink url="http://java.sun.com/aboutJava/communityprocess/jsr/jsr_220_dataobj.html">
+EJB 3 JSR page</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+<ulink url="http://java.sun.com/products/ejb">Sun EJB page</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+<ulink url="http://java.sun.com/javaee/5/docs/api/index.html">Locally mirrored
+javax.persistence Javadoc</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+<ulink url="../../api/index.html">OpenJPA API Javadoc</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+<ulink url="../apidocs/index.html">Full OpenJPA Javadoc</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+<ulink url="Persistence.pdf">Locally mirrored JPA specification</ulink>
+ </para>
+ </listitem>
</itemizedlist>
- </appendix>
+</appendix>