blob: d5160ac41e412896be626a51ccfe94be3167039c [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>@ValuePartitioning | EclipseLink 2.5.x Java Persistence API (JPA) Extensions Reference</title>
<meta name="generator" content="Oracle DARB XHTML Converter (Mode = document) - Version 1.0.17" />
<meta name="date" content="2013-10-03T12:33:25Z" />
<meta name="robots" content="noarchive" />
<meta name="doctitle" content="@ValuePartitioning" />
<meta name="relnum" content="Release 2.5" />
<link rel="stylesheet" type="text/css" href="../../../dcommon/style.css" media="screen" />
<link rel="copyright" href="http://www.eclipse.org/org/documents/epl-v10.php" title="Copyright" type="text/html" />
<link rel="start" href="../../index.htm" title="Home" type="text/html" />
<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
<link rel="prev" href="a_valuepartition.htm" title="Previous" type="text/html" />
<link rel="next" href="a_variableonetoone.htm" title="Next" type="text/html" />
<!-- START: Disqus --><script type="text/javascript"> var disqus_developer = 0; </script><!-- END: Disqus --><!-- START: Sharethis --><script type="text/javascript">var switchTo5x=true;</script><script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script><script type="text/javascript" src="http://s.sharethis.com/loader.js"></script> <!-- END: Sharethis --></head>
<body bgcolor="#FFFFFF"><iframe id="docheader" frameborder="0" framemargin="0" scrolling="no" src="../../../dcommon/header.html"></iframe><script src="http://www.google.com/jsapi" type="text/javascript"></script><script type="text/javascript"> google.load('search', '1', {language : 'en'}); google.setOnLoadCallback(function() { var customSearchOptions = {}; var googleAnalyticsOptions = {}; googleAnalyticsOptions['queryParameter'] = 'q'; googleAnalyticsOptions['categoryParameter'] = ''; customSearchOptions['googleAnalyticsOptions'] = googleAnalyticsOptions; var customSearchControl = new google.search.CustomSearchControl( '016171230611334810008:4sqnhke2any', customSearchOptions); customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); var options = new google.search.DrawOptions(); options.setSearchFormRoot('cse-search-form'); customSearchControl.draw('cse', options); }, true);</script><link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" /><div id="cse" style="width:100%;"></div>
<div class="header"><a id="top" name="top"></a>
<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left" valign="top"><div class="booktitle">Java Persistence API (JPA) Extensions Reference for EclipseLink,
<b>Release 2.5</b><br /></font></td>
<td valign="bottom" align="right" width="144">
<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td>&nbsp;</td>
<td align="center" valign="top"><a href="toc.htm"><img src="../../../dcommon/images/contents.png" alt="Go To Table Of Contents" border="0" height="16" width="16" /><br />
</td><td>&nbsp;</td><td align="center"><a href="../../../" target="_top" class="external text" title="Search" rel="nofollow"><img src="../../../dcommon/images/search.png" alt="Search" style="border:0;" /><br /><span class="mini"></span></a></td><td>&nbsp;</td><td align="center"><a href="../../eclipselink_jpa_extensions.pdf" title="PDF" target="_blank"><img src="../../../dcommon/images/pdf_icon.png" style="padding-right:5px;border:0" alt="PDF"></a></td><td align="center"><a href="#disqus_thread" title="Comments""><img src="../../../dcommon/images/comments.png" style="padding-right:5px;border:0" alt="Comments"><br /><span class="mini">Comments</span></a>
</tr>
</table>
</td>
</tr>
</table>
<hr />
<table class="navigation simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100" align="center">
<tr>
<td align="center"><a href="a_valuepartition.htm"><img src="../../../dcommon/images/larrow.png" alt="Previous" border="0" height="16" width="16" /></a></td>
<td align="center"><a href="a_variableonetoone.htm"><img src="../../../dcommon/images/rarrow.png" alt="Next" border="0" height="16" width="16" /></a></td>
<td>&nbsp;</td>
</tr>
</table>
</div>
<!-- class="header" -->
<div class="ind"><!-- End Header --><a id="CEGHFJDJ" name="CEGHFJDJ"></a><a id="TLJPA589" name="TLJPA589"></a>
<hr />
<div class="refsect1">
<h2 class="refsect1"><font face="arial, helvetica, sans-serif" color="#330099">@ValuePartitioning</font></h2>
<p>Use <code>@ValuePartitioning</code> to partition access to a database cluster by a field value from the object (such as the object's location or tenant). Each value is assigned a specific server. All write or read request for object's with that value are sent to the server. If a query does not include the field as a parameter, then it can either be sent to all server's and unioned, or left to the session's default behavior.</p>
<a id="sthref435" name="sthref435"></a>
<p><strong><br /><span class="refsubsect">Annotation Elements</span></strong></p>
<p><a href="#CEGEGCEA">Table 2-77</a> describes this annotation's elements.</p>
<div class="tblhruleformalwide"><a id="TLJPA590" name="TLJPA590"></a><a id="sthref436" name="sthref436"></a><a id="CEGEGCEA" name="CEGEGCEA"></a>
<p><strong><em><font face="arial, helvetica, sans-serif">Table 2-77 @ValuePartitioning Annotation Elements</font></em></strong></p>
<table class="HRuleFormalWide" title="@ValuePartitioning Annotation Elements" summary="This table describes this annotation&rsquo;s elements." dir="ltr" border="1" width="100%" frame="hsides" rules="rows" cellpadding="3" cellspacing="0">
<col width="29%" />
<col width="*" />
<col width="12%" />
<thead>
<tr align="left" valign="top">
<th align="left" valign="bottom" id="r1c1-t94"><font face="Arial, Helvetica, sans-serif"><strong>Annotation Element</strong></font></th>
<th align="left" valign="bottom" id="r1c2-t94"><font face="Arial, Helvetica, sans-serif"><strong>Description</strong></font></th>
<th align="left" valign="bottom" id="r1c3-t94"><font face="Arial, Helvetica, sans-serif"><strong>Default</strong></font></th>
</tr>
</thead>
<tbody>
<tr align="left" valign="top">
<td align="left" id="r2c1-t94" headers="r1c1-t94">
<p><code>name</code></p>
</td>
<td align="left" headers="r2c1-t94 r1c2-t94">
<p>(Required) Name of the partition policy. Names must be unique for the persistence unit.</p>
</td>
<td align="left" headers="r2c1-t94 r1c3-t94"><br /></td>
</tr>
<tr align="left" valign="top">
<td align="left" id="r3c1-t94" headers="r1c1-t94">
<p><code>partitionColumn</code></p>
</td>
<td align="left" headers="r3c1-t94 r1c2-t94">
<p>(Required) The database column or query parameter to partition queries by</p>
<p>This is the table column name, not the class attribute name. The column value must be included in the query and should normally be part of the object's ID. This can also be the name of a query parameter.</p>
<p>If a query does not contain the field the query will not be partitioned.</p>
</td>
<td align="left" headers="r3c1-t94 r1c3-t94"><br /></td>
</tr>
<tr align="left" valign="top">
<td align="left" id="r4c1-t94" headers="r1c1-t94">
<p><code>partitions</code></p>
</td>
<td align="left" headers="r4c1-t94 r1c2-t94">
<p>(Required) Store the value partitions. Each partition maps a value to a <code>connectionPool</code>.</p>
</td>
<td align="left" headers="r4c1-t94 r1c3-t94"><br /></td>
</tr>
<tr align="left" valign="top">
<td align="left" id="r5c1-t94" headers="r1c1-t94">
<p><code>defaultConnectionPool</code></p>
</td>
<td align="left" headers="r5c1-t94 r1c2-t94">
<p>(Optional) The default connection pool is used for any unmapped values</p>
</td>
<td align="left" headers="r5c1-t94 r1c3-t94"><br /></td>
</tr>
<tr align="left" valign="top">
<td align="left" id="r6c1-t94" headers="r1c1-t94">
<p><code>partitionValueType</code></p>
</td>
<td align="left" headers="r6c1-t94 r1c2-t94">
<p>(Optional) The <code>type</code> of the start and end values</p>
</td>
<td align="left" headers="r6c1-t94 r1c3-t94">
<p><code>String</code></p>
</td>
</tr>
<tr align="left" valign="top">
<td align="left" id="r7c1-t94" headers="r1c1-t94">
<p><code>unionUnpartitionableQueries</code></p>
</td>
<td align="left" headers="r7c1-t94 r1c2-t94">
<p>(Optional) Defines if queries that do not contain the partition field should be sent to every database and have the result unioned.</p>
</td>
<td align="left" headers="r7c1-t94 r1c3-t94">
<p><code>false</code></p>
</td>
</tr>
</tbody>
</table>
<br /></div>
<!-- class="tblhruleformalwide" -->
<a id="sthref437" name="sthref437"></a>
<p><strong><br /><span class="refsubsect">Usage</span></strong></p>
<p>Partitioning can be enabled on an Entity, relationship, query, or session/persistence unit. Partition policies are globally named to allow reuse, the partitioning policy must also be set using the <code>@Partitioned</code> annotation to be used.</p>
<p>The persistence unit properties support adding named connection pools in addition to the existing configuration for read/write/sequence. A named connection pool must be defined for each node in the database cluster.</p>
<p>If a transaction modifies data from multiple partitions, you should use JTA ensure proper two-phase commit of the data. You can also configure an exclusive connection in the EntityManager to ensure that only a single node is used for a single transaction.</p>
<a id="sthref438" name="sthref438"></a>
<p><strong><br /><span class="refsubsect">Examples</span></strong></p>
<p>See <a href="a_partitioned.htm#CEGHAIDJ">"Using Partitioning"</a> for an example of partitioning with EclipseLink.</p>
<a id="sthref439" name="sthref439"></a>
<p><strong><br /><span class="refsubsect">See Also</span></strong></p>
<p>For more information, see:</p>
<ul>
<li>
<p>"Data Partitioning"<br />
<code><a href="http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Data_Partitioning">http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Data_Partitioning</a></code></p>
</li>
<li>
<p><a href="a_partitioned.htm#CHDDAHEB">"@Partitioned"</a></p>
</li>
</ul>
</div>
<!-- class="refsect1" --></div>
<!-- class="ind" -->
<!-- Start Footer -->
<div class="footer">
<hr />
<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
<col width="33%" />
<col width="*" />
<col width="33%" />
<tr>
<td valign="bottom">
<table class="navigation simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100" align="center">
<col width="*" />
<col width="48%" />
<col width="48%" />
<tr>
<td>&nbsp;</td>
<td align="center"><a href="a_valuepartition.htm"><img src="../../../dcommon/images/larrow.png" alt="Previous" border="0" height="16" width="16" /></a></td>
<td align="center"><a href="a_variableonetoone.htm"><img src="../../../dcommon/images/rarrow.png" alt="Next" border="0" height="16" width="16" /></a></td>
</tr>
</table>
</td>
<td align="center" width="34%"><a href="http://www.eclipse.org/eclipselink/" title="EclipseLink home"><img src="../../../dcommon/images/ellogo.png" alt="EclipseLink" width="150" border="0" /></a><br />
</td>
<td valign="bottom" align="right">
<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="225">
<tr>
<td>&nbsp;</td>
<td align="center" valign="top"><a href="toc.htm"><img src="../../../dcommon/images/contents.png" alt="Go To Table Of Contents" border="0" height="16" width="16" /><br />
</td><td>&nbsp;</td><td align="center"><a href="../../../" target="_top" class="external text" title="Search" rel="nofollow"><img src="../../../dcommon/images/search.png" alt="Search" style="border:0;" /><br /><span class="mini"></span></a></td><td>&nbsp;</td><td align="center"><a href="../../eclipselink_jpa_extensions.pdf" title="PDF" target="_blank"><img src="../../../dcommon/images/pdf_icon.png" style="padding-right:5px;border:0" alt="PDF"></a></td><td align="center"><a href="#disqus_thread" title="Comments""><img src="../../../dcommon/images/comments.png" style="padding-right:5px;border:0" alt="Comments"><br /><span class="mini">Comments</span></a>
</tr>
</table>
</td>
</tr>
</table>
</div>
<!-- class="footer" -->
<div id="copyright">Copyright &copy; 2012 by The Eclipse Foundation under the <a href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License (EPL)</a><br /> <script type="text/javascript">var LastUpdated = document.lastModified;document.writeln ("Updated: " + LastUpdated);</script> </div><!-- START: Analytics --><script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-1608008-2']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script><!-- END: Analytics --><!-- START: Sharethis --><script>var options={ "publisher": "e2fe9e07-fab6-4f84-83ea-0991b429842c", "position": "right", "ad": { "visible": false, "openDelay": 5, "closeDelay": 0}};var st_hover_widget = new sharethis.widgets.hoverbuttons(options);</script><!-- END: Sharethis --></body>
</html>