|
|
(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}}
| + | |