blob: ea56f58d3b36d2df7144bb593f96e71db3821628 [file] [log] [blame]
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- No caching headers -->
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="expires" content="-1"/>
<meta name="keywords" content="JDO, Apache, Java, Data, Objects"/>
<meta name="description" content="Apache JDO - Java Data Objects"/>
<title>Why JDO ?</title>
<link rel="icon" type="image/png" href="https://apache.github.io/db-jdo-site/images/JDO_32x32.png"/>
<!--
Apache JDO Documentation Template
==================================
This template derived various aspects from Apache Deltaspike template, the Apache ISIS template and the Datanucleus template.
This template uses
* Bootstrap v3.3.7 (https://getbootstrap.com/) for navbar.
* Asciidoctor "foundation" CSS
* Bootswatch "cosmo" theme for Bootstrap (https://bootswatch.com/cosmo).
* Bootstrap TOC plugin v0.4.1 (https://afeld.github.io/bootstrap-toc/) for the table of contents.
* jQuery (necessary for Bootstrap's JavaScript plugins)
* Font-Awesome for some icons used by Asciidoctor
NOTE: tried using Font-Awesome CSS hosted locally but then fails to work!
-->
<link href="css/bootswatch/3.3.7/bootstrap-cosmo.css" rel="stylesheet"/>
<link href="css/bootstrap-toc/0.4.1/bootstrap-toc.min.css" rel="stylesheet"/>
<link href="css/asciidoctor/foundation.css" rel="stylesheet"/>
<link href="css/datanucleus_theme.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="js/bootstrap/3.3.7/bootstrap.min.js"></script>
<script src="js/bootstrap-toc/0.4.1/bootstrap-toc.min.js"></script>
<!-- Coderay syntax formatter -->
<style type="text/css">
/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
/*pre.CodeRay {background-color:#f7f7f8;}*/
.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
.CodeRay .line-numbers strong{color:rgba(0,0,0,.4)}
table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
table.CodeRay td{vertical-align: top;line-height:1.45}
table.CodeRay td.line-numbers{text-align:right}
table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
table.CodeRay td.code{padding:0 0 0 .5em}
table.CodeRay td.code>pre{padding:0}
.CodeRay .debug{color:#fff !important;background:#000080 !important}
.CodeRay .annotation{color:#007}
.CodeRay .attribute-name{color:#000080}
.CodeRay .attribute-value{color:#700}
.CodeRay .binary{color:#509}
.CodeRay .comment{color:#998;font-style:italic}
.CodeRay .char{color:#04d}
.CodeRay .char .content{color:#04d}
.CodeRay .char .delimiter{color:#039}
.CodeRay .class{color:#458;font-weight:bold}
.CodeRay .complex{color:#a08}
.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
.CodeRay .color{color:#099}
.CodeRay .class-variable{color:#369}
.CodeRay .decorator{color:#b0b}
.CodeRay .definition{color:#099}
.CodeRay .delimiter{color:#000}
.CodeRay .doc{color:#970}
.CodeRay .doctype{color:#34b}
.CodeRay .doc-string{color:#d42}
.CodeRay .escape{color:#666}
.CodeRay .entity{color:#800}
.CodeRay .error{color:#808}
.CodeRay .exception{color:inherit}
.CodeRay .filename{color:#099}
.CodeRay .function{color:#900;font-weight:bold}
.CodeRay .global-variable{color:#008080}
.CodeRay .hex{color:#058}
.CodeRay .integer,.CodeRay .float{color:#099}
.CodeRay .include{color:#555}
.CodeRay .inline{color:#000}
.CodeRay .inline .inline{background:#ccc}
.CodeRay .inline .inline .inline{background:#bbb}
.CodeRay .inline .inline-delimiter{color:#d14}
.CodeRay .inline-delimiter{color:#d14}
.CodeRay .important{color:#555;font-weight:bold}
.CodeRay .interpreted{color:#b2b}
.CodeRay .instance-variable{color:#008080}
.CodeRay .label{color:#970}
.CodeRay .local-variable{color:#963}
.CodeRay .octal{color:#40e}
.CodeRay .predefined{color:#369}
.CodeRay .preprocessor{color:#579}
.CodeRay .pseudo-class{color:#555}
.CodeRay .directive{font-weight:bold}
.CodeRay .type{font-weight:bold}
.CodeRay .predefined-type{color:inherit}
.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
.CodeRay .key{color:#808}
.CodeRay .key .delimiter{color:#606}
.CodeRay .key .char{color:#80f}
.CodeRay .value{color:#088}
.CodeRay .regexp .delimiter{color:#808}
.CodeRay .regexp .content{color:#808}
.CodeRay .regexp .modifier{color:#808}
.CodeRay .regexp .char{color:#d14}
.CodeRay .regexp .function{color:#404;font-weight:bold}
.CodeRay .string{color:#d20}
.CodeRay .string .string .string{background:#ffd0d0}
.CodeRay .string .content{color:#d14}
.CodeRay .string .char{color:#d14}
.CodeRay .string .delimiter{color:#d14}
.CodeRay .shell{color:#d14}
.CodeRay .shell .delimiter{color:#d14}
.CodeRay .symbol{color:#990073}
.CodeRay .symbol .content{color:#a60}
.CodeRay .symbol .delimiter{color:#630}
.CodeRay .tag{color:#008080}
.CodeRay .tag-special{color:#d70}
.CodeRay .variable{color:#036}
.CodeRay .insert{background:#afa}
.CodeRay .delete{background:#faa}
.CodeRay .change{color:#aaf;background:#007}
.CodeRay .head{color:#f8f;background:#505}
.CodeRay .insert .insert{color:#080}
.CodeRay .delete .delete{color:#800}
.CodeRay .change .change{color:#66f}
.CodeRay .head .head{color:#f4f}
</style>
</head>
<body data-spy="scroll" data-target="#toc">
<!-- Navbar -->
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<!-- Three line menu button for use on mobile screens -->
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- 'style' added to align image with navbar. FIX THIS -->
<a class="navbar-brand" href="https://db.apache.org/jdo/">
<img style="margin-top: -12px;" alt="Brand" src="images/JDO_44x44.png"/>
</a>
<!-- TODO Any way to abstract the version from Maven? -->
<a class="navbar-brand" href="index.html">Apache JDO</a>
</div>
<!-- Navbar that will collapse on mobile screens -->
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<!-- menu item General -->
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" style="background-color:#2385c6">General<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="why_jdo.html">Why JDO?</a></li>
<li><a href="getting-started.html">Getting Started</a></li>
<li><a href="specifications.html">Specifications</a></li>
<li><a href="tck.html">TCK</a></li>
<li><a href="javadoc.html">API Javadoc</a></li>
<li role="separator" class="divider"></li>
<li><a href="jdo_v_jpa.html">JDO v JPA</a></li>
<li><a href="jdo_v_jpa_api.html">JDO v JPA : API</a></li>
<li><a href="jdo_v_jpa_orm.html">JDO v JPA : ORM</a></li>
<li role="separator" class="divider"></li>
<li><a href="license.html">License</a></li>
<li><a href="impls.html">Implementations</a></li>
<li><a href="jdo_3_0_overview.html">JDO 3.0 Overview</a></li>
<li><a href="references.html">References</a></li>
<li><a href="glossary.html">Glossary</a></li>
</ul>
</li>
<!-- menu item API Usage -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">API Usage<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="jdohelper.html">JDO Helper</a></li>
<li><a href="pmf.html">PersistenceManagerFactory</a></li>
<li><a href="pm.html">PersistenceManager</a></li>
<li><a href="transactions.html">Transactions</a></li>
<li><a href="attach_detach.html">Attach-Detach</a></li>
<li><a href="fetchgroups.html">Fetch Groups</a></li>
<li><a href="state_transition.html">Object States</a></li>
<li><a href="object_retrieval.html">Object Retrieval</a></li>
<li><a href="exceptions.html">Exceptions</a></li>
<li role="separator" class="divider"></li>
<li><a href="guides-replication.html">Data Replication</a></li>
</ul>
</li>
<!-- menu item Types & Metadata -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Types &amp; Metadata<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="class_types.html">Types of Classes</a></li>
<li><a href="field_types.html">Types of Fields</a></li>
<li role="separator" class="divider"></li>
<!-- <li class="dropdown-header">Metadata</li> -->
<li><a href="metadata.html">MetaData</a></li>
<li><a href="annotations.html">Annotations</a></li>
<li><a href="jdo_dtd.html">jdo DTD/XSD</a></li>
<li><a href="orm_dtd.html">orm DTD/XSD</a></li>
<li><a href="jdoquery_dtd.html">jdoquery DTD/XSD</a></li>
<li><a href="jdoconfig_dtd.html">jdoconfig DTD/XSD</a></li>
<li role="separator" class="divider"></li>
<li><a href="enhancement.html">Bytecode Enhancement</a></li>
</ul>
</li>
<!-- menu item Query -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Query<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="jdoql.html">JDOQL</a></li>
<li><a href="jdoql_result.html">Result</a></li>
<li><a href="jdoql_methods.html">Methods</a></li>
<li><a href="jdoql_quickref.pdf">Quick Ref PDF</a></li>
<li role="separator" class="divider"></li>
<li><a href="extents.html">Extents</a></li>
</ul>
</li>
<!-- menu item Community -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="get-involved.html">Get Involved</a></li>
<li><a href="team-list.html">Project Team</a></li>
<li><a href="mail-lists.html">Mailing Lists</a></li>
<li><a href="faq.html">FAQ</a></li>
</ul>
</li>
<!-- menu item Development -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Development<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="roadmap.html">RoadMap / TODO</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="source-code.html">Source Code</a></li>
<li><a href="coding-standards.html">Coding Standards</a></li>
<li><a href="issuetracking.html">Issue Tracking</a></li>
</ul>
</li>
</ul>
<!-- 'style' added to fix height of input box. FIX THIS -->
<form class="navbar-form navbar-left" role="search" id="search-form" action="https://www.google.com/search" method="get" style="padding: 1px 15px;">
<div class="form-group">
<input name="sitesearch" value="db.apache.org/jdo" type="hidden">
<input name="q" type="text" class="form-control" placeholder="Search" style="margin-top: 7px; padding: 1px; border-radius: 5px; height: 30px; vertical-align: middle;">
</div>
</form>
</div>
</div>
</nav>
<div class="container">
<!-- No TOC -->
<div class="row-fluid">
<div class="col-sm-12">
<!-- no heading -->
<div id="doc-content">
<div class="sect1">
<h2 id="index">Why JDO ?<a id="Why_JDO_"></a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>The majority of applications need to persist (or store) data during
their lifecycle. There are many ways of doing this with an application
written in Java.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If your datastore is RDBMS you can handle the persistence (and
retrieval) of data yourself using <strong>JDBC</strong>. Obviously with this route you
have the burden of having to write the persistence layer yourself. This
gives much control, but also creates significant work, both in writing
the code but also in testing and maintenance.</p>
</li>
<li>
<p>You can use <strong>JDO</strong>, a standardised persistence API. With <strong>JDO</strong> you can
develop plain old java objects (POJOs) and persist them as they are
transparently. This requires very little work from the developer. It
allows persistence to any type of datastore in principle, being designed
with flexibility and datastore agnositicity in mind. This has been a
standard since 2002 (JDO1), being upgraded in 2006 (JDO2) and is in the
process of being developed further (JDO2.1) by Apache JDO</p>
</li>
<li>
<p>You can use <strong>JPA</strong>, a standardised persistence API, and part of the
EJB3 specification. This also allows you to to develop plain old Java
objects (POJOs) and persist them using a standardised API. It&#8217;s
specification is not as mature or as feature rich as the JDO API, nor
does it provide the flexibility of using any type of datastore. This was
released in 2006 (JPA1) to supercede EJB2. It really only allows
persistence to RDBMS datastores. If you want to persist to other
datastores you should consider JDO.</p>
</li>
<li>
<p><em>If you are stuck with using an EJB2.* architecture you could use
Entity Beans. This means that you hand off your objects to the EJB part
of the J2EE server. This simplifies things for the developer in some
respect but places major restrictions in that your objects have to be
Entity Beans.</em></p>
</li>
<li>
<p>You can also use a proprietary persistence API (e.g Hibernates own
API, TopLinks own API, iBatis, Castor etc). The disadvantages of going
this route are that you cannot easily swap to an alternative
implementation of the API if you hit problems with your software choice.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>To give a <em>guide</em>, here are a few important consideration points when
choosing a persistence layer for your application.</p>
</div>
<table class="tableblock frame-all grid-cols spread">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Feature</th>
<th class="tableblock halign-left valign-top">JDBC</th>
<th class="tableblock halign-left valign-top">JDO</th>
<th class="tableblock halign-left valign-top">JPA</th>
<th class="tableblock halign-left valign-top">EJB2</th>
<th class="tableblock halign-left valign-top">Custom ORM</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Standards-Driven</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Choice of datastores</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Support POJOs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Usable in J2SE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Usable in J2EE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Out of box implementation (1)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Simple to unit test</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Dynamic queries</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span> (2)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comprehensive ORM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_warning_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_warning_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Primary Key generation</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span> (2)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Supports inherited objects</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span>
(2)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Schema Creation</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_error_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Existing schema</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="image"><img src="images/icon_success_sml.png" alt="image"></span></p></td>
</tr>
</tbody>
</table>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>refers to whether it is necessary to write the persistence yourself
(e.g as with JDBC) or whether you can just persist by simple calls.</p>
</li>
<li>
<p>requires the developer to write this layer.</p>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer style="color:#fff; background-color:#222222; padding: 5px;">
<div class="container">
<div class="row" style="margin-top:25px">
<div class="col-sm" align="center">
<a href="https://www.facebook.com/JavaDataObjects" class="externalLink" title="Facebook">Facebook</a>
|
<a href="https://twitter.com/JavaDataObjects" class="externalLink" title="Twitter">Twitter</a>
|
<a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
|
<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630" class="externalLink" title="Issue Tracker">Issue Tracker</a>
|
<a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
|
<a href="api31/apidocs/index.html" title="Latest Javadocs">Latest Javadocs</a>
</div>
</div>
<p class="text-center" style="margin-top:16px">&copy; 2005-2020 Apache Software Foundation. All Rights Reserved.</p>
</div>
</footer>
</body>
</html>