Skip to main content
Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/JPA/NoSQL"

(NoSQL example)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{EclipseLink_UserGuide
+
#REDIRECT[[EclipseLink/UserGuide/JPA/Advanced JPA Development/NoSQL]]
|info=y
+
|toc=y
+
|eclipselink=y
+
|eclipselinktype=JPA
+
|api=y
+
|apis=
+
*[http://www.eclipse.org/eclipselink/api/latest/org/eclipse/persistence/annotations/NoSQL.html @NoSQL]
+
*[http://www.eclipse.org/eclipselink/api/latest/org/eclipse/persistence/annotations/DataFormatType.html DataFormatType]
+
|nativeapi=y
+
|nativeapis=
+
*[http://www.eclipse.org/eclipselink/api/latest/org/eclipse/persistence/eis/EISDescriptor.html EISDescriptor]}}
+
 
+
= NoSQL =
+
 
+
NoSQL is a classification of database systems that do not support the SQL standard.  These include document databases, key-value stores, and various other non-standard databases.  EclipseLink supports persistence of Java objects to NoSQL databases through the Java Persistence API (JPA).  EclipseLink's native API is also supported with NoSQL databases.
+
 
+
The NoSQL classification can also be expanded to include Enterprise Information Systems (EIS) including application databases, legacy databases, messaging systems, and transaction processing monitors.
+
 
+
EclipseLink's NoSQL support includes:
+
* MongoDB
+
* Oracle NoSQL
+
* XML files
+
* JMS
+
* Oracle AQ
+
 
+
== @NoSQL ==
+
Mapping to NoSQL data is configured through the EclipseLink <code>@NoSQL</code> annotation, and <code><no-sql></code> XML element.
+
<code>@NoSQL</code> defines the class as mapping to non-relational data.  <code>@NoSQL</code> can be specified with <code>@Entity</code> or <code>@Embeddable</code> classes.
+
 
+
The <code>@NoSQL</code> annotation defines a <code>dataType</code> and a <code>dataFormat</code>.  The <code>dataType</code> is name for the entities structure, the meaning of the <code>dataType</code> is dependent on the NoSQL platform.  For MongoDB, it is the collection name that the JSON documents are stored to.  For Oracle NoSQL the <code>dataType</code> is the first part of the major key value.  For the XML file adapter it is the file name.
+
 
+
The <code>dataFormat</code> specifies the type of structure the data is stored as.  The <code>dataFormat</code> is defined by the <code>DataFormatType</code> enum.
+
Three types of NoSQL data formats are supported:
+
* <code>XML</code> - maps a class to an XML document, this can be used with XML data-stores, XML files, XML messaging systems, and other XML systems.
+
* <code>MAPPED</code> - maps a class to a set of nested key/value pairs, a value can be an embedded map or list.  This can be used to map to key/value stores, JSON databases, and other structured data systems.
+
* <code>INDEXED</code> - maps a class to an array of values.
+
 
+
The <code>dataFormat</code> is dependent on the NoSQL platform.  MongoDB must use the <code>MAPPED</code> format.  Oracle NoSQL can use either the <code>MAPPED</code> format for key/value data, or the <code>XML</code> format for a single XML document value.  XML files and XML messaging use the <code>XML</code> format.
+
 
+
====NoSQL example====
+
<source lang="java">
+
@Entity
+
@NoSQL(dataType="orders", dataFormat=DataFormatType.MAPPED)
+
public class Order {
+
  @Id
+
  @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<OrderLine> orderLines;
+
  @ManyToOne
+
  @JoinField(name="customerId")
+
  private Customer customer;
+
}
+
</source>
+
 
+
<br>
+
<br>
+
 
+
{{EclipseLink_JPA
+
|previous=
+
|up=[[EclipseLink/UserGuide/JPA/Advanced JPA Development|Advanced JPA Development]]
+
|next=[[EclipseLink/UserGuide/JPA/NoSQL/Mappings|Mappings]]  
+
|version=2.4.0 DRAFT}}
+

Latest revision as of 14:49, 26 April 2012

Back to the top