<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_07) on Thu Aug 23 19:40:09 EDT 2007 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
AbstractStoreManager (OpenJPA 1.0.0 API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.openjpa.abstractstore.AbstractStoreManager class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="AbstractStoreManager (OpenJPA 1.0.0 API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AbstractStoreManager.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.html" title="class in org.apache.openjpa.abstractstore"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/openjpa/abstractstore/AbstractStoreManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AbstractStoreManager.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.openjpa.abstractstore</FONT>
<BR>
Class AbstractStoreManager</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.openjpa.abstractstore.AbstractStoreManager</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A>, <A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html" title="interface in org.apache.openjpa.lib.util">Closeable</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../org/apache/openjpa/xmlstore/XMLStoreManager.html" title="class in org.apache.openjpa.xmlstore">XMLStoreManager</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public abstract class <B>AbstractStoreManager</B><DT>extends <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></DL>
</PRE>

<P>
Abstract store manager implementation to ease development of custom
 OpenJPA back-ends. A concrete subclass must define implementations for the
 following methods:
 <ul>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><CODE>StoreManager.exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#flush(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection)"><CODE>flush(Collection,Collection,Collection,Collection,Collection)</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)"><CODE>executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)</CODE></A></li>
 </ul> Additionally, subclasses should not attempt to acquire resources
 until <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#open()"><CODE>open()</CODE></A> has been called. Store manager instances might be
 created to call metadata methods such as <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newConfiguration()"><CODE>newConfiguration()</CODE></A> or
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getUnsupportedOptions()"><CODE>getUnsupportedOptions()</CODE></A> and never opened. These instances should
 not consume any data store resources.
  Notes:
 <ul>
 <li>The <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>StoreManager.initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> method is responsible
 for creating new instances of objects freshly loaded from the
 database. The method will be invoked with a <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel"><CODE>OpenJPAStateManager</CODE></A>
 that the newly-loaded object should be associated with. To create the
 new object and set up this association correctly, the implementation
 should use the <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)"><CODE>OpenJPAStateManager.initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)</CODE></A> method.</li>
 <li>If your data store supports some sort of transaction or
 unit of work, you should override the <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#begin()"><CODE>begin()</CODE></A>, <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#commit()"><CODE>commit()</CODE></A>,
 and <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#rollback()"><CODE>rollback()</CODE></A> methods.</li>
 <li>This class provides no infrastructure support for optimistic
 transactions. To provide optimistic transaction support:
 <ul>
 <li>Override <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#beginOptimistic()"><CODE>beginOptimistic()</CODE></A>, <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#rollbackOptimistic()"><CODE>rollbackOptimistic()</CODE></A>,
 and <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><CODE>syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)</CODE></A>.</li>
 <li>Override <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getUnsupportedOptions()"><CODE>getUnsupportedOptions()</CODE></A> to not include <A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_OPTIMISTIC"><CODE>OpenJPAConfiguration.OPTION_OPTIMISTIC</CODE></A> in the list of unsupported
 options.</li>
 <li>Ensure that your flush implementation sets the next
 version for each modified object via the <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#setNextVersion(java.lang.Object)"><CODE>OpenJPAStateManager.setNextVersion(java.lang.Object)</CODE></A> method.</li>
 <li>If your version object does not implement <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A>,
 override <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)"><CODE>compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)</CODE></A>, which relies on the
 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html#compareTo(T)" title="class or interface in java.lang"><CODE>Comparable.compareTo(T)</CODE></A> method.</li>
 </ul></li>
 <li>If your data store supports a mechanism for automatically
 generating and managing identity values (or if you want to
 provide that facility on top of your data store), implement
 the <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)"><CODE>getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)</CODE></A> method if you want to use a
 <code>long</code> as your datastore identity type and are
 happy with OpenJPA's <A HREF="../../../../org/apache/openjpa/util/Id.html" title="class in org.apache.openjpa.util"><CODE>Id</CODE></A> class. To use another datastore identity
 type, override <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getManagedType(java.lang.Object)"><CODE>getManagedType(java.lang.Object)</CODE></A>,
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)"><CODE>getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)</CODE></A>, <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><CODE>copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)</CODE></A>, and
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><CODE>newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)</CODE></A> instead. In either case, override
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getUnsupportedOptions()"><CODE>getUnsupportedOptions()</CODE></A> to not include
 <A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_ID_DATASTORE"><CODE>OpenJPAConfiguration.OPTION_ID_DATASTORE</CODE></A> in the list of
 unsupported options.</li>
 <li>If your data store does not support queries (or if you do
 not want to convert OpenJPA's query parse tree into a
 datastore-specific query), you still have two options in terms
 of query execution:
 <ul>
 <li><em>In-memory execution</em>: If you
 execute a query against an extent or a class, OpenJPA will
 automatically load the full extent of objects into memory and
 execute the query in memory.</li>
 <li><em>openjpa.MethodQL</em>: MethodQL allows
 you to use the query APIs to execute a method that finds
 data in your back-end and returns that data as a
 <A HREF="../../../../org/apache/openjpa/lib/rop/ResultList.html" title="interface in org.apache.openjpa.lib.rop"><CODE>ResultList</CODE></A>. For more details on
 MethodQL, see the OpenJPA Reference Guide.</li>
 </ul></li>
 </ul>
<P>

<P>
<DL>
<DT><B>Since:</B></DT>
  <DD>0.3.1</DD>
</DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#ctx">ctx</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.openjpa.kernel.StoreManager"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_ALL">FORCE_LOAD_ALL</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_DFG">FORCE_LOAD_DFG</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_NONE">FORCE_LOAD_NONE</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#FORCE_LOAD_REFRESH">FORCE_LOAD_REFRESH</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_DIFFERENT">VERSION_DIFFERENT</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_EARLIER">VERSION_EARLIER</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_LATER">VERSION_LATER</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_SAME">VERSION_SAME</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#AbstractStoreManager()">AbstractStoreManager</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#assignDataStoreId(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">assignDataStoreId</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                  <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;val)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assign a new datastore identity to the given instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)">assignField</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
            int&nbsp;field,
            boolean&nbsp;preFlush)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assign a value to the given field.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)">assignObjectId</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
               boolean&nbsp;preFlush)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assign an object id to the given new instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)">beforeStateChange</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                  <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;fromState,
                  <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;toState)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notification that the given state manager is about to change its
 lifecycle state.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#begin()">begin</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenJPA assumes that after this method is invoked, all data
 accesses through this store manager will be part of a single
 unit of work that can be rolled back.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#beginOptimistic()">beginOptimistic</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No-op implementation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#cancelAll()">cancelAll</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>false</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#close()">close</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Free any resources this store manager is using.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#commit()">commit</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is a no-op implementation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)">compareVersion</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;state,
               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v1,
               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v2)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Casts <code>v1</code> and <code>v2</code> to <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A>, and
 invokes <code>v1.compareTo (v2)</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">copyDataStoreId</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid,
                <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copy the given object id value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;<A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop">ResultObjectProvider</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)">executeExtent</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
              boolean&nbsp;subs,
              <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a <A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop"><CODE>ResultObjectProvider</CODE></A> that can return all instances
 of <code>type</code>, optionally including subclasses as defined
 by <code>subclasses</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#flush(java.util.Collection)">flush</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Breaks down <code>states</code> based on the objects' current
 states, and delegates to
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#flush(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection)"><CODE>flush(Collection,Collection,Collection,Collection,Collection)</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected abstract &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#flush(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection)">flush</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pNew,
      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pNewUpdated,
      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pNewFlushedDeleted,
      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pDirty,
      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pDeleted)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Responsible for writing modifications happened back to the data
 store.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getClientConnection()">getClientConnection</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>null</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getContext()">getContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel"><CODE>StoreContext</CODE></A> that this store manager is
 associated with.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdSequence</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;forClass)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the system-configured sequence.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdType</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the class used by this StoreManager for datastore identity
 values.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getManagedType(java.lang.Object)">getManagedType</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the persistent class for the given data store identity value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getPlatform()">getPlatform</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a string name to identify the platform of this
 store manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getUnsupportedOptions()">getUnsupportedOptions</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a set of option names that this store manager does
 not support.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getValueSequence(org.apache.openjpa.meta.FieldMetaData)">getValueSequence</A></B>(<A HREF="../../../../org/apache/openjpa/meta/FieldMetaData.html" title="class in org.apache.openjpa.meta">FieldMetaData</A>&nbsp;forField)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns null.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">initialize</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
           <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
           <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
           <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when OpenJPA needs to load an object whose
 identity is known but which has not yet been loaded from the data
 store.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)">load</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
     <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/BitSet.html" title="class or interface in java.util">BitSet</A>&nbsp;fields,
     <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
     int&nbsp;lockLevel,
     <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is invoked when OpenJPA needs to load additional data
 into an object that has already been at least partially loaded by
 a previous <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> invocation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">loadAll</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms,
        <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
        int&nbsp;load,
        <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
        <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This implementation just delegates to the proper singular
 method (<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>StoreManager.initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> or <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>StoreManager.load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A>)
 depending on each state manager's state.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html" title="interface in org.apache.openjpa.conf">OpenJPAConfiguration</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newConfiguration()">newConfiguration</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a new configuration instance for this runtime.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">newDataStoreId</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;val,
               <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new unique datastore identity for the given type from
 the given oid value (presumably pk, stringified oid, or oid instance).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newFetchConfiguration()">newFetchConfiguration</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a fetch configuration suitable for this runtime.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newQuery(java.lang.String)">newQuery</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;language)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a query implementation suitable for this store.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#open()">open</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No-op implementation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#releaseConnection()">releaseConnection</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Override to release previously-retained connection.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#retainConnection()">retainConnection</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Override to retain a dedicated connection.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#rollback()">rollback</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is a no-op implementation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#rollbackOptimistic()">rollbackOptimistic</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No-op implementation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#setContext(org.apache.openjpa.kernel.StoreContext)">setContext</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A>&nbsp;ctx)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set a reference to the corresponding context.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">syncVersion</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Since this store manager does not provide optimistic locking
 support, this method always returns <code>true</code>.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.openjpa.kernel.StoreManager"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from interface org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#exists(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">exists</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="ctx"><!-- --></A><H3>
ctx</H3>
<PRE>
protected <A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A> <B>ctx</B></PRE>
<DL>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="AbstractStoreManager()"><!-- --></A><H3>
AbstractStoreManager</H3>
<PRE>
public <B>AbstractStoreManager</B>()</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="setContext(org.apache.openjpa.kernel.StoreContext)"><!-- --></A><H3>
setContext</H3>
<PRE>
public final void <B>setContext</B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A>&nbsp;ctx)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#setContext(org.apache.openjpa.kernel.StoreContext)">StoreManager</A></CODE></B></DD>
<DD>Set a reference to the corresponding context. This method
 will be called before the store manager is used. The store manager
 is responsible for pulling any necessary configuration data from the
 context, including the transaction mode and connection retain mode.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#setContext(org.apache.openjpa.kernel.StoreContext)">setContext</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getContext()"><!-- --></A><H3>
getContext</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel">StoreContext</A> <B>getContext</B>()</PRE>
<DL>
<DD>Returns the <A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html" title="interface in org.apache.openjpa.kernel"><CODE>StoreContext</CODE></A> that this store manager is
 associated with.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="open()"><!-- --></A><H3>
open</H3>
<PRE>
protected void <B>open</B>()</PRE>
<DL>
<DD>No-op implementation. Ready this store manager for persistent operations.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="beginOptimistic()"><!-- --></A><H3>
beginOptimistic</H3>
<PRE>
public void <B>beginOptimistic</B>()</PRE>
<DL>
<DD>No-op implementation. Override this method to provide optimistic
 locking semantics for your data store if you need notification of
 the beginning of an optimistic transaction.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beginOptimistic()">beginOptimistic</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="rollbackOptimistic()"><!-- --></A><H3>
rollbackOptimistic</H3>
<PRE>
public void <B>rollbackOptimistic</B>()</PRE>
<DL>
<DD>No-op implementation. Override this method to provide optimistic
 locking semantics for your data store if you need notification of
 a rollback of an optimistic transaction before <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#begin()"><CODE>begin()</CODE></A> is invoked.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#rollbackOptimistic()">rollbackOptimistic</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="begin()"><!-- --></A><H3>
begin</H3>
<PRE>
public void <B>begin</B>()</PRE>
<DL>
<DD>OpenJPA assumes that after this method is invoked, all data
 accesses through this store manager will be part of a single
 unit of work that can be rolled back.
  This is a no-op implementation. If your data store does not
 support any concept of locking or transactions, you need not
 override this method.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#begin()">begin</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="commit()"><!-- --></A><H3>
commit</H3>
<PRE>
public void <B>commit</B>()</PRE>
<DL>
<DD>This is a no-op implementation. If your data store does not
 have a concept of transactions or a unit of work, you need not
 override this method. If it does, then override this method to
 notify the data store that the current transaction should be committed.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#commit()">commit</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="rollback()"><!-- --></A><H3>
rollback</H3>
<PRE>
public void <B>rollback</B>()</PRE>
<DL>
<DD>This is a no-op implementation. If your data store does not
 have a concept of transactions or a unit of work, you need not
 override this method. If it does, then override this method to
 notify the data store that the current transaction should be rolled back.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#rollback()">rollback</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><!-- --></A><H3>
syncVersion</H3>
<PRE>
public boolean <B>syncVersion</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                           <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</PRE>
<DL>
<DD>Since this store manager does not provide optimistic locking
 support, this method always returns <code>true</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#syncVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)">syncVersion</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sm</CODE> - the instance to check<DD><CODE>edata</CODE> - the current execution data, or null if not
 given to the calling method of the context
<DT><B>Returns:</B><DD>true if the instance still exists in the
 datastore and is up-to-date, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><!-- --></A><H3>
initialize</H3>
<PRE>
public abstract boolean <B>initialize</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                                   <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
                                   <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
                                   <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</PRE>
<DL>
<DD>This method is invoked when OpenJPA needs to load an object whose
 identity is known but which has not yet been loaded from the data
 store. <code>sm</code> is a partially-set-up state manager for this
 object. The ID and least-derived type information for the instance
 to load can be obtained by invoking
 <code>sm.getObjectId()</code> and <code>sm.getMetaData()</code>.
 
  When implementing this method, load the data for this object from
 the data store, determine the most-derived subclass of the newly-loaded
 data, and then use the <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)"><CODE>OpenJPAStateManager.initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)</CODE></A> method to
 populate <code>sm</code> with a new instance of the appropriate type.
 Once <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)"><CODE>OpenJPAStateManager.initialize(java.lang.Class, org.apache.openjpa.kernel.PCState)</CODE></A> has been invoked, proceed to
 load field data into <code>sm</code> as in the <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A> method, by
 using <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#store(int, java.lang.Object)"><CODE>OpenJPAStateManager.store(int, java.lang.Object)</CODE></A> (or the appropriate
 <code>OpenJPAStateManager.store<em>type</em></code> method) to put the
 data into the object.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">initialize</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sm</CODE> - the instance to initialize<DD><CODE>state</CODE> - the lifecycle state to initialize the state manager with<DD><CODE>fetch</CODE> - configuration for how to load the instance<DD><CODE>edata</CODE> - the current execution data, or null if not
 given to the calling method of the broker
<DT><B>Returns:</B><DD>true if the matching instance exists in the data
 store, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><!-- --></A><H3>
load</H3>
<PRE>
public abstract boolean <B>load</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                             <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/BitSet.html" title="class or interface in java.util">BitSet</A>&nbsp;fields,
                             <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
                             int&nbsp;lockLevel,
                             <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</PRE>
<DL>
<DD>This method is invoked when OpenJPA needs to load additional data
 into an object that has already been at least partially loaded by
 a previous <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> invocation.
  Load data into <code>sm</code> by using <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#store(int, java.lang.Object)"><CODE>OpenJPAStateManager.store(int, java.lang.Object)</CODE></A> (or the appropriate
 <code>OpenJPAStateManager.store<em>type</em></code> method) to put the
 data into the object.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)">load</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sm</CODE> - the instance to load<DD><CODE>fields</CODE> - set of fields to load; all field indexes in this
 set must be loaded; this set is mutable<DD><CODE>fetch</CODE> - the fetch configuration to use when loading
 related objects<DD><CODE>lockLevel</CODE> - attempt to load simple fields at this lock level;
 relations should be loaded at the read lock level
 of the fetch configuration<DD><CODE>edata</CODE> - the current execution data, or null if not
 given to the calling method of the broker
<DT><B>Returns:</B><DD>false if the object no longer exists in the
 database, true otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><!-- --></A><H3>
loadAll</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>loadAll</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms,
                          <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;state,
                          int&nbsp;load,
                          <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;edata)</PRE>
<DL>
<DD>This implementation just delegates to the proper singular
 method (<A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>StoreManager.initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> or <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>StoreManager.load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A>)
 depending on each state manager's state. If your data store provides
 bulk loading APIs, overriding this method to be more clever may be
 advantageous.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)">loadAll</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>sms</CODE> - the state manager instances to load<DD><CODE>state</CODE> - the lifecycle state to initialize uninitialized
 state managers with; may be null if no uninitialized
 instances are included in <code>sms</code><DD><CODE>load</CODE> - one of the FORCE_LOAD_* constants describing the
 fields to force-load if this is a refresh or retrieve action<DD><CODE>fetch</CODE> - the current fetch configuration to use when loading
 related objects<DD><CODE>edata</CODE> - the current execution data, or null if not
 given to the calling method of the broker
<DT><B>Returns:</B><DD>a collection of the state manager identities for
 which no data store record exists<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#loadAll(java.util.Collection, org.apache.openjpa.kernel.StoreManager, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>ImplHelper.loadAll(java.util.Collection, org.apache.openjpa.kernel.StoreManager, org.apache.openjpa.kernel.PCState, int, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="flush(java.util.Collection)"><!-- --></A><H3>
flush</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>flush</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;sms)</PRE>
<DL>
<DD>Breaks down <code>states</code> based on the objects' current
 states, and delegates to
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#flush(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection)"><CODE>flush(Collection,Collection,Collection,Collection,Collection)</CODE></A>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)">flush</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>See Also:</B><DD><CODE>org.apache.openjpa.util.ApplicationIds#assign()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)"><!-- --></A><H3>
beforeStateChange</H3>
<PRE>
public void <B>beforeStateChange</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                              <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;fromState,
                              <A HREF="../../../../org/apache/openjpa/kernel/PCState.html" title="class in org.apache.openjpa.kernel">PCState</A>&nbsp;toState)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)">StoreManager</A></CODE></B></DD>
<DD>Notification that the given state manager is about to change its
 lifecycle state. The store manager is not required to do anything in
 this method, but some back ends may need to.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#beforeStateChange(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.PCState)">beforeStateChange</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)"><!-- --></A><H3>
assignObjectId</H3>
<PRE>
public boolean <B>assignObjectId</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                              boolean&nbsp;preFlush)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)">StoreManager</A></CODE></B></DD>
<DD>Assign an object id to the given new instance. Return false if the
 instance cannot be assigned an identity because a flush is required
 (for example, the identity is determined by the datastore on insert).
 For application identity instances, the assigned object id should be
 based on field state. The implementation is responsible for using the
 proper value strategy according to the instance metadata. This method
 is called the first time a user requests the oid of a new instance
 before flush.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignObjectId(org.apache.openjpa.kernel.OpenJPAStateManager, boolean)">assignObjectId</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>preFlush</CODE> - whether this assignment is being requested by the
 system as part of pre-flush activities, and can
 be ignored if it is more efficient to assign within <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)"><CODE>StoreManager.flush(java.util.Collection)</CODE></A><DT><B>See Also:</B><DD><A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)"><CODE>ImplHelper.generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)</CODE></A>, 
<A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#generateIdentityValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.ClassMetaData, int)"><CODE>ImplHelper.generateIdentityValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.ClassMetaData, int)</CODE></A>, 
<CODE>org.apache.openjpa.util.ApplicationIds#assign()</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="assignDataStoreId(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object)"><!-- --></A><H3>
assignDataStoreId</H3>
<PRE>
protected boolean <B>assignDataStoreId</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;val)</PRE>
<DL>
<DD>Assign a new datastore identity to the given instance. This given
 value may be null.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)"><!-- --></A><H3>
assignField</H3>
<PRE>
public boolean <B>assignField</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;sm,
                           int&nbsp;field,
                           boolean&nbsp;preFlush)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)">StoreManager</A></CODE></B></DD>
<DD>Assign a value to the given field. Return false if the value cannot
 be assigned because a flush is required (for example, the field value
 is determined by the datastore on insert). This method is called the
 first time a user requests the value of a field with a value-strategy
 on a new instance before flush.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#assignField(org.apache.openjpa.kernel.OpenJPAStateManager, int, boolean)">assignField</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>preFlush</CODE> - whether this assignment is being requested by the
 system as part of pre-flush activities, and can
 be ignored if it is more efficient to assign within <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)"><CODE>StoreManager.flush(java.util.Collection)</CODE></A><DT><B>See Also:</B><DD><A HREF="../../../../org/apache/openjpa/util/ImplHelper.html#generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)"><CODE>ImplHelper.generateFieldValue(org.apache.openjpa.kernel.StoreContext, org.apache.openjpa.meta.FieldMetaData)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getManagedType(java.lang.Object)"><!-- --></A><H3>
getManagedType</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>getManagedType</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getManagedType(java.lang.Object)">StoreManager</A></CODE></B></DD>
<DD>Return the persistent class for the given data store identity value.
 If the given value is not a datastore identity object, return null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getManagedType(java.lang.Object)">getManagedType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
getDataStoreIdType</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>getDataStoreIdType</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Return the class used by this StoreManager for datastore identity
 values. The given metadata may be null, in which case the return
 value should the common datastore identity class for all classes, or
 null if this store manager does not use a common identity class.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdType</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
copyDataStoreId</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>copyDataStoreId</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;oid,
                              <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Copy the given object id value. Use the described type of the given
 metadata, which may be a subclass of the given oid's described type.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">copyDataStoreId</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
newDataStoreId</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>newDataStoreId</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;val,
                             <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">StoreManager</A></CODE></B></DD>
<DD>Create a new unique datastore identity for the given type from
 the given oid value (presumably pk, stringified oid, or oid instance).
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)">newDataStoreId</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="retainConnection()"><!-- --></A><H3>
retainConnection</H3>
<PRE>
public void <B>retainConnection</B>()</PRE>
<DL>
<DD>Override to retain a dedicated connection.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#retainConnection()">retainConnection</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="releaseConnection()"><!-- --></A><H3>
releaseConnection</H3>
<PRE>
public void <B>releaseConnection</B>()</PRE>
<DL>
<DD>Override to release previously-retained connection.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#releaseConnection()">releaseConnection</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getClientConnection()"><!-- --></A><H3>
getClientConnection</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getClientConnection</B>()</PRE>
<DL>
<DD>Returns <code>null</code>. If your data store can provide a
 distinct connection object, return it here.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getClientConnection()">getClientConnection</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)"><!-- --></A><H3>
executeExtent</H3>
<PRE>
public abstract <A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop">ResultObjectProvider</A> <B>executeExtent</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
                                                   boolean&nbsp;subs,
                                                   <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A>&nbsp;fetch)</PRE>
<DL>
<DD>Create a <A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop"><CODE>ResultObjectProvider</CODE></A> that can return all instances
 of <code>type</code>, optionally including subclasses as defined
 by <code>subclasses</code>.
  The implementation of the result provider will typically execute
 some sort of data store query to find all the applicable objects, loop
 through the results, extracting object IDs from the data, and invoke
 <A HREF="../../../../org/apache/openjpa/kernel/StoreContext.html#find(java.lang.Object, org.apache.openjpa.kernel.FetchConfiguration, java.util.BitSet, java.lang.Object, int)"><CODE>StoreContext.find(Object,FetchConfiguration,BitSet,Object,int)</CODE></A>
 on each OID. When invoking this method, the first argument is the OID.
 The second is the given fetch configuration. The
 third argument is a mask of fields to exclude from loading; it will
 typically be null. The fourth argument is an object that will be passed
 through to <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> or <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A>, and typically will
 contain the actual data to load. For example, for a JDBC-based store
 manager, this might be the result set that is being iterated over. If
 this argument is <code>null</code>, then the <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)"><CODE>initialize(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.kernel.PCState, org.apache.openjpa.kernel.FetchConfiguration, java.lang.Object)</CODE></A> or
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)"><CODE>load(org.apache.openjpa.kernel.OpenJPAStateManager, java.util.BitSet, org.apache.openjpa.kernel.FetchConfiguration, int, java.lang.Object)</CODE></A> method will have to issue another command to the data
 store in order to fetch the data to be loaded.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)">executeExtent</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="newQuery(java.lang.String)"><!-- --></A><H3>
newQuery</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A> <B>newQuery</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;language)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newQuery(java.lang.String)">StoreManager</A></CODE></B></DD>
<DD>Return a query implementation suitable for this store. If the query
 is iterated within a data store transaction, returned instances should
 be locked. Return null if this store does not support native execution
 of the given language. OpenJPA can execute JPQL in memory even without
 back end support.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newQuery(java.lang.String)">newQuery</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>language</CODE> - the query language</DL>
</DD>
</DL>
<HR>

<A NAME="newFetchConfiguration()"><!-- --></A><H3>
newFetchConfiguration</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/FetchConfiguration.html" title="interface in org.apache.openjpa.kernel">FetchConfiguration</A> <B>newFetchConfiguration</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newFetchConfiguration()">StoreManager</A></CODE></B></DD>
<DD>Return a fetch configuration suitable for this runtime. Typically
 will be or extend <code>FetchConfigurationImpl</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#newFetchConfiguration()">newFetchConfiguration</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)"><!-- --></A><H3>
compareVersion</H3>
<PRE>
public int <B>compareVersion</B>(<A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html" title="interface in org.apache.openjpa.kernel">OpenJPAStateManager</A>&nbsp;state,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v1,
                          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;v2)</PRE>
<DL>
<DD>Casts <code>v1</code> and <code>v2</code> to <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang"><CODE>Comparable</CODE></A>, and
 invokes <code>v1.compareTo (v2)</code>. If <code>v1</code> is less
 than <code>v2</code>, returns <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_EARLIER"><CODE>StoreManager.VERSION_EARLIER</CODE></A>. If the same,
 returns <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_SAME"><CODE>StoreManager.VERSION_SAME</CODE></A>. Otherwise, returns <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_LATER"><CODE>StoreManager.VERSION_LATER</CODE></A>. If either <code>v1</code> or <code>v2</code> are
 <code>null</code>, returns <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_DIFFERENT"><CODE>StoreManager.VERSION_DIFFERENT</CODE></A>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)">compareVersion</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>state</CODE> - the state manager for the object<DD><CODE>v1</CODE> - the first version object to compare<DD><CODE>v2</CODE> - the second version object to compare
<DT><B>Returns:</B><DD><ul>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_LATER"><CODE>StoreManager.VERSION_LATER</CODE></A> if <code>v1</code>
 is later than <code>v2</code></li>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_EARLIER"><CODE>StoreManager.VERSION_EARLIER</CODE></A> if <code>v1</code>
 is earlier than <code>v2</code></li>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_SAME"><CODE>StoreManager.VERSION_SAME</CODE></A> if <code>v1</code>
 is the same as <code>v2</code></li>
 <li><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#VERSION_DIFFERENT"><CODE>StoreManager.VERSION_DIFFERENT</CODE></A> if <code>v1</code>
 is different from <code>v2</code>, but the time
 difference of the versions cannot be determined</li>
 </ul></DL>
</DD>
</DL>
<HR>

<A NAME="getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
getDataStoreIdSequence</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A> <B>getDataStoreIdSequence</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;forClass)</PRE>
<DL>
<DD>Returns the system-configured sequence. To use some other sort
 of datastore identifier (a GUID, string, or someting of that nature),
 override <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getManagedType(java.lang.Object)"><CODE>getManagedType(java.lang.Object)</CODE></A>,
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)"><CODE>getDataStoreIdType(org.apache.openjpa.meta.ClassMetaData)</CODE></A>, <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><CODE>copyDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)</CODE></A>,
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)"><CODE>newDataStoreId(java.lang.Object, org.apache.openjpa.meta.ClassMetaData)</CODE></A>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getDataStoreIdSequence(org.apache.openjpa.meta.ClassMetaData)">getDataStoreIdSequence</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getValueSequence(org.apache.openjpa.meta.FieldMetaData)"><!-- --></A><H3>
getValueSequence</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/Seq.html" title="interface in org.apache.openjpa.kernel">Seq</A> <B>getValueSequence</B>(<A HREF="../../../../org/apache/openjpa/meta/FieldMetaData.html" title="class in org.apache.openjpa.meta">FieldMetaData</A>&nbsp;forField)</PRE>
<DL>
<DD>Returns null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#getValueSequence(org.apache.openjpa.meta.FieldMetaData)">getValueSequence</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="cancelAll()"><!-- --></A><H3>
cancelAll</H3>
<PRE>
public boolean <B>cancelAll</B>()</PRE>
<DL>
<DD>Returns <code>false</code>. If your data store supports
 cancelling queries, this method should cancel any
 currently-running queries and return <code>true</code> if any
 were cancelled.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#cancelAll()">cancelAll</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if any statements cancelled, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="close()"><!-- --></A><H3>
close</H3>
<PRE>
public void <B>close</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#close()">StoreManager</A></CODE></B></DD>
<DD>Free any resources this store manager is using.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#close()">close</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html" title="interface in org.apache.openjpa.kernel">StoreManager</A></CODE><DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html#close()">close</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/lib/util/Closeable.html" title="interface in org.apache.openjpa.lib.util">Closeable</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="flush(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection)"><!-- --></A><H3>
flush</H3>
<PRE>
protected abstract <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>flush</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pNew,
                                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pNewUpdated,
                                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pNewFlushedDeleted,
                                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pDirty,
                                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;pDeleted)</PRE>
<DL>
<DD>Responsible for writing modifications happened back to the data
 store. If you do not remove the
 <A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_INC_FLUSH"><CODE>OpenJPAConfiguration.OPTION_INC_FLUSH</CODE></A> option in
 <A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreManager.html#getUnsupportedOptions()"><CODE>getUnsupportedOptions()</CODE></A>, this will be called only once at the
 end    of a transaction. Otherwise, it may be called periodically
 throughout the course of a transaction.
  If this store manager supports optimistic transactions, datastore
 version information should be updated during flush, and the state
 manager's version indicator should be updated through the
 <A HREF="../../../../org/apache/openjpa/kernel/OpenJPAStateManager.html#setNextVersion(java.lang.Object)"><CODE>OpenJPAStateManager.setNextVersion(java.lang.Object)</CODE></A> method.
  This method will only be invoked if there are meaningful changes
 to store. This differs from the behavior of <A HREF="../../../../org/apache/openjpa/kernel/StoreManager.html#flush(java.util.Collection)"><CODE>StoreManager.flush(java.util.Collection)</CODE></A>,
 which may be invoked with a collection of objects in states that
 do not require any datastore action (for example, objects in the
 transient-transactional state).
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pNew</CODE> - Objects that should be added to the store,
 and that have not previously been flushed.<DD><CODE>pNewUpdated</CODE> - New objects that have been modified since
 they were initially flushed. These were
 in <code>persistentNew</code> in an earlier flush invocation.<DD><CODE>pNewFlushedDeleted</CODE> - New objects that have been deleted since
 they were initially flushed. These were
 in <code>persistentNew</code> in an earlier flush invocation.<DD><CODE>pDirty</CODE> - Objects that were loaded from the data
 store and have since been modified.<DD><CODE>pDeleted</CODE> - Objects that were loaded from the data
 store and have since been deleted. These
 may have been in a previous flush invocation's persistentDirty list.
<DT><B>Returns:</B><DD>a collection of exceptions encountered during flushing.</DL>
</DD>
</DL>
<HR>

<A NAME="newConfiguration()"><!-- --></A><H3>
newConfiguration</H3>
<PRE>
protected <A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html" title="interface in org.apache.openjpa.conf">OpenJPAConfiguration</A> <B>newConfiguration</B>()</PRE>
<DL>
<DD>Return a new configuration instance for this runtime. Configuration
 data is maintained at the factory level and is available to all OpenJPA
 components; therefore it is a good place to maintain shared resources
 such as connection pools, etc.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getUnsupportedOptions()"><!-- --></A><H3>
getUnsupportedOptions</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A> <B>getUnsupportedOptions</B>()</PRE>
<DL>
<DD>Returns a set of option names that this store manager does
 not support. By default, returns the following:
 <ul>
 <li><A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_OPTIMISTIC"><CODE>OpenJPAConfiguration.OPTION_OPTIMISTIC</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_ID_DATASTORE"><CODE>OpenJPAConfiguration.OPTION_ID_DATASTORE</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_INC_FLUSH"><CODE>OpenJPAConfiguration.OPTION_INC_FLUSH</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_VALUE_AUTOASSIGN"><CODE>OpenJPAConfiguration.OPTION_VALUE_AUTOASSIGN</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_VALUE_INCREMENT"><CODE>OpenJPAConfiguration.OPTION_VALUE_INCREMENT</CODE></A></li>
 <li><A HREF="../../../../org/apache/openjpa/conf/OpenJPAConfiguration.html#OPTION_DATASTORE_CONNECTION"><CODE>OpenJPAConfiguration.OPTION_DATASTORE_CONNECTION</CODE></A></li>
 </ul>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getPlatform()"><!-- --></A><H3>
getPlatform</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getPlatform</B>()</PRE>
<DL>
<DD>Returns a string name to identify the platform of this
 store manager. Returns the class name of this store manager by default.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AbstractStoreManager.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.html" title="class in org.apache.openjpa.abstractstore"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/openjpa/abstractstore/AbstractStoreManager.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AbstractStoreManager.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &copy; 2006-2007 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
