blob: ebae59021edbe52d97cb657f884356ae6cf67af1 [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>@NoSql | 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:24Z" />
<meta name="robots" content="noarchive" />
<meta name="doctitle" content="@NoSql" />
<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_noncacheable.htm" title="Previous" type="text/html" />
<link rel="next" href="a_objecttypeconverter.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 />
<span class="mini">Contents</span></a></td><td>&nbsp;</td><td align="center"><a href="../../../" target="_top" class="external text" title="Other searches" rel="nofollow"><img src="../../../dcommon/images/search.png" alt="Search" style="border:0;" /><br /><span class="mini">Other&nbsp;Searches</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"><br /><span class="mini">PDF</span></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_noncacheable.htm"><img src="../../../dcommon/images/larrow.png" alt="Previous" border="0" height="16" width="16" /></a></td>
<td align="center"><a href="a_objecttypeconverter.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="BJEIEBHC" name="BJEIEBHC"></a><a id="TLJPA475" name="TLJPA475"></a>
<hr />
<div class="refsect1">
<h2 class="refsect1"><font face="arial, helvetica, sans-serif" color="#330099">@NoSql</font></h2>
<p>Use <code>@NoSql</code> to specify a non-relational (that is, no SQL) data source. EclipseLink can map non-relational data to objects and access that data through JPA.</p>
<a id="sthref243" name="sthref243"></a>
<p><strong><br /><span class="refsubsect">Annotation Elements</span></strong></p>
<p><a href="#BJEBBCFE">Table 2-42</a> describes this annotation's elements.</p>
<div class="tblhruleformalwide"><a id="TLJPA476" name="TLJPA476"></a><a id="sthref244" name="sthref244"></a><a id="BJEBBCFE" name="BJEBBCFE"></a>
<p><strong><em><font face="arial, helvetica, sans-serif">Table 2-42 @NoSql Annotation Elements</font></em></strong></p>
<table class="HRuleFormalWide" title="@NoSql 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="21%" />
<col width="*" />
<col width="20%" />
<thead>
<tr align="left" valign="top">
<th align="left" valign="bottom" id="r1c1-t52"><font face="Arial, Helvetica, sans-serif"><strong>Annotation Element</strong></font></th>
<th align="left" valign="bottom" id="r1c2-t52"><font face="Arial, Helvetica, sans-serif"><strong>Description</strong></font></th>
<th align="left" valign="bottom" id="r1c3-t52"><font face="Arial, Helvetica, sans-serif"><strong>Default</strong></font></th>
</tr>
</thead>
<tbody>
<tr align="left" valign="top">
<td align="left" id="r2c1-t52" headers="r1c1-t52">
<p><code>dataType</code></p>
</td>
<td align="left" headers="r2c1-t52 r1c2-t52">
<p>The name of the entities structure. The purpose of the <code>dataType</code> depends on the NoSQL platform used:</p>
<ul>
<li>
<p>For MongoDB, it is the collection name that the JSON documents are stored to.</p>
</li>
<li>
<p>For Oracle NoSQL, it is the first part of the major key value.</p>
</li>
<li>
<p>For XML files, it is the file name. and XML messaging, use <code>XML</code>.</p>
</li>
</ul>
</td>
<td align="left" headers="r2c1-t52 r1c3-t52"><br /></td>
</tr>
<tr align="left" valign="top">
<td align="left" id="r3c1-t52" headers="r1c1-t52">
<p><code>dataFormat</code></p>
</td>
<td align="left" headers="r3c1-t52 r1c2-t52">
<p>(Optional) The type structure (data format) in which the data is stored within the database:</p>
<ul>
<li>
<p><code>INDEXED</code> &ndash; Maps a class to an array of values.</p>
</li>
<li>
<p><code>MAPPED</code> &ndash; Maps a class to a set of nested key/value pairs, a value can be an embedded map or list.</p>
<p>Use to map to key/value stores, JSON databases, and other structured data systems.</p>
</li>
<li>
<p><code>XML</code> &ndash; Maps a class to an XML document.</p>
<p>Use with XML data-stores, XML files, XML messaging systems, and other XML systems.</p>
</li>
</ul>
</td>
<td align="left" headers="r3c1-t52 r1c3-t52">
<p>XML</p>
</td>
</tr>
</tbody>
</table>
<br /></div>
<!-- class="tblhruleformalwide" -->
<a id="sthref245" name="sthref245"></a>
<p><strong><br /><span class="refsubsect">Usage</span></strong></p>
<p>The <code>dataFormat</code> depends on the NoSQL platform used:</p>
<ul>
<li>
<p>For MongoDB, use <code>MAPPED</code>.</p>
</li>
<li>
<p>For Oracle NoSQL, use <code>MAPPED</code> (for key/value data) or <code>XML</code> (for a single XML document).</p>
</li>
<li>
<p>For XML files and XML messaging, use <code>XML</code>.</p>
</li>
</ul>
<a id="TLJPA721" name="TLJPA721"></a>
<p><b><font face="arial, helvetica, sans-serif" color="#330099">Supported Datasources</font></b></p>
<p>EclipseLink supports several NoSQL and EIS platforms, as well as generic NoSQL and EIS datasources through the JavaEE Connector Architecture CCI (Common Client Interface) API. You can also define your own <code>EISPlatform</code> subclass and JCA adapter</p>
<p>EclipseLink supports the following datasources:</p>
<ul>
<li>
<p>MongoDB</p>
</li>
<li>
<p>Oracle NoSQL</p>
</li>
<li>
<p>XML Files</p>
</li>
<li>
<p>JMS</p>
</li>
<li>
<p>Oracle AQ</p>
</li>
</ul>
<a id="sthref246" name="sthref246"></a>
<p><strong><br /><span class="refsubsect">Examples</span></strong></p>
<p><a href="#BJECFBJG">Example 2-78</a> shows using <code>@NoSql</code> with an XML data source.</p>
<div class="example"><a id="BJECFBJG" name="BJECFBJG"></a><a id="TLJPA477" name="TLJPA477"></a>
<p><strong><em><font face="arial, helvetica, sans-serif">Example 2-78 Using @NoSql Annotation with XML</font></em></strong></p>
<pre xml:space="preserve" class="oac_no_warn">
@Entity
<strong>@NoSql</strong><strong>(dataType="order")</strong>
public class Order {
@Id
@GeneratedValue
@Field(name="@id")
private long id;
@Basic
@Field(name="@description")
private String description;
@Embedded
@Field(name="delivery-address")
private Address deliveryAddress
@ElementCollection
@Field(name="orderLines/order-line")
private List&lt;OrderLine&gt; orderLines;
@ManyToOne
@JoinField(name="customer-id")
private Customer customer;
}
@Embeddable
<strong>@NoSql</strong>
public class OrderLine {
@Field(name="@line-number")
private int lineNumber;
@Field(name="@item-name")
private String itemName;
@Field(name="@quantity")
private int quantity;
}
</pre>
<p>This would produce the following XML data:</p>
<pre xml:space="preserve" class="oac_no_warn">
&lt;order id="4F99702B271B1948027FAF06" description="widget order"&gt;
&lt;deliveryAddress street="1712 Hasting Street" city="Ottawa" province="ON" postalCode="L5J1H5"/&gt;
&lt;order-lines&gt;
&lt;order-line lineNumber="1" itemName="widget A" quantity="5"/&gt;
&lt;order-line lineNumber="2" itemName="widget B" quantity="1"/&gt;
&lt;order-line lineNumber="3" itemName="widget C" quantity="2"/&gt;
&lt;order-lines&gt;
&lt;customer-id&gt;4F99702B271B1948027FAF08&lt;/customer-id&gt;
&lt;order&gt;
</pre></div>
<!-- class="example" -->
<p><a href="#BJECHGJH">Example 2-79</a> shows using <code>@NoSql</code> with a JSON data source.</p>
<div class="example"><a id="BJECHGJH" name="BJECHGJH"></a><a id="TLJPA722" name="TLJPA722"></a>
<p><strong><em><font face="arial, helvetica, sans-serif">Example 2-79 Using @NoSql Annotation with JSON</font></em></strong></p>
<pre xml:space="preserve" class="oac_no_warn">
@Entity
<strong>@NoSql(dataType="orders", dataFormat=DataFormatType.MAPPED)</strong>
public class Order {
@Id
@GeneratedValue
@Field(name="_id")
private long id;
@Basic
@Field(name="description")
private String description;
@Embedded
@Field(name="deliveryAddress")
private Address deliveryAddress
@ElementCollection
@Field(name="orderLines")
private List&lt;OrderLine&gt; orderLines;
@ManyToOne
@JoinField(name="customerId")
private Customer customer;
}
@Embeddable
<strong>@NoSql(dataFormat=DataFormatType.MAPPED)</strong>
public class OrderLine {
@Field(name="lineNumber")
private int lineNumber;
@Field(name="itemName")
private String itemName;
@Field(name="quantity")
private int quantity;
}
</pre>
<p>This would produce the following JSON document:</p>
<pre xml:space="preserve" class="oac_no_warn">
{
"_id": "4F99702B271B1948027FAF06",
"description": "widget order",
"deliveryAddress": {
"street": "1712 Hasting Street",
"city": "Ottawa",
"province": "ON",
"postalCode": "L5J1H5",
},
"orderLines": [
{"lineNumber": "1", "itemName": "widget A", "quantity": "5"},
{"lineNumber": "2", "itemName": "widget B", "quantity": "1"},
{"lineNumber": "3", "itemName": "widget C", "quantity": "2"}
],
"customerId": "4F99702B271B1948027FAF08",
}
</pre></div>
<!-- class="example" -->
<a id="sthref247" name="sthref247"></a>
<p><strong><br /><span class="refsubsect">See Also</span></strong></p>
<p>For more information, see:</p>
<ul>
<li>
<p>@NoSQL<br />
<code><a href="http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL">http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL</a></code></p>
</li>
<li>
<p>NoSQL Persistence Units<br />
<code><a href="http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL/Persistence_Units">http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL/Persistence_Units</a></code></p>
</li>
<li>
<p>Examples<br />
<code><a href="http://wiki.eclipse.org/EclipseLink/Examples/JPA/NoSQL">http://wiki.eclipse.org/EclipseLink/Examples/JPA/NoSQL</a></code></p>
</li>
<li>
<p><em>Oracle Coherence Integration Guide for EclipseLink with Coherence Grid</em></p>
</li>
<li>
<p>"Using Non-SQL Databases" in <em>Understanding EclipseLink</em></p>
</li>
<li>
<p>"Using NoSQL Databases" in <em>Understanding EclipseLink</em></p>
</li>
<li>
<p>"Using EclipseLink with Nonrelational Databases" in <em>Solutions Guide for EclispeLink</em></p>
</li>
<li>
<p><a href="p_nosql_property.htm#BABJAJAI">"nosql.property"</a></p>
</li>
<li>
<p>EclipseLink Platform Incubator<br />
<code><a href="http://wiki.eclipse.org/EclipseLink/Development/Incubator/Platform">http://wiki.eclipse.org/EclipseLink/Development/Incubator/Platform</a></code></p>
</li>
<li>
<p>Supported NoSQL and EIS Datasources<br />
<code><a href="http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL/Supported_Data-sources">http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL/Supported_Data-sources</a></code></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_noncacheable.htm"><img src="../../../dcommon/images/larrow.png" alt="Previous" border="0" height="16" width="16" /></a></td>
<td align="center"><a href="a_objecttypeconverter.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 />
<span class="mini">Contents</span></a></td><td>&nbsp;</td><td align="center"><a href="../../../" target="_top" class="external text" title="Other searches" rel="nofollow"><img src="../../../dcommon/images/search.png" alt="Search" style="border:0;" /><br /><span class="mini">Other&nbsp;Searches</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"><br /><span class="mini">PDF</span></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 --><!-- START: Disqus --><div id="disqus_thread"></div> <script type="text/javascript"> var disqus_developer = 1;var disqus_shortname = 'eclipselinkdoc'; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> <a href="http://disqus.com" class="dsq-brlink">Comments powered by <span class="logo-disqus">Disqus</span></a><!-- END: Disqus --></body>
</html>