Whilst we aim to ultimately support all API features on all supported datastores, this isn't currently possible. See below for a summary of what feature is supported on which datastore. .
Feature | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
General Features | ||||||||||||||
Datastore Identity | ||||||||||||||
Application Identity | ||||||||||||||
Nondurable Identity [1] | ||||||||||||||
Composite Identity | ||||||||||||||
Nontransactional | ||||||||||||||
ACID Transactions | ||||||||||||||
Versioned objects | ||||||||||||||
Optimistic Checks | ||||||||||||||
Fetch Plan control | ||||||||||||||
Native Connection access (JDO) | ||||||||||||||
Encryption of data [7] | ||||||||||||||
Backed object wrappers [2] | ||||||||||||||
Cascade Persist | ||||||||||||||
Cascade Update | ||||||||||||||
Cascade Delete | ||||||||||||||
Schema Evolution - New fields [3] | ||||||||||||||
Value Generation | ||||||||||||||
native(JDO)/auto(JPA) | ||||||||||||||
increment(JDO)/table(JPA) | ||||||||||||||
identity(JDO/JPA) | ||||||||||||||
sequence(JDO/JPA) | ||||||||||||||
uuid-hex(JDO) | ||||||||||||||
uuid-string(JDO) | ||||||||||||||
uuid | ||||||||||||||
timestamp | ||||||||||||||
timestamp-value | ||||||||||||||
max | ||||||||||||||
O/R Mapping | ||||||||||||||
Indexes | ||||||||||||||
Unique Keys | ||||||||||||||
Foreign Keys | ||||||||||||||
Primary Keys | ||||||||||||||
Inheritance(complete-table) [4] | ||||||||||||||
Inheritance(new-table) | ||||||||||||||
Inheritance(subclass-table) | ||||||||||||||
Inheritance(superclass-table) | ||||||||||||||
Discriminators | ||||||||||||||
Secondary Tables | ||||||||||||||
Join Tables | ||||||||||||||
Embedded PC | ||||||||||||||
Embedded PC stored nested ([8]) | ||||||||||||||
Embedded Collection | ||||||||||||||
Embedded Map | ||||||||||||||
Embedded Array | ||||||||||||||
Serialised PC | ||||||||||||||
Serialised Collection | ||||||||||||||
Serialised Map | ||||||||||||||
1-1 | ||||||||||||||
1-N | ||||||||||||||
M-N | ||||||||||||||
SchemaTool | ||||||||||||||
Multitenancy by discriminator | ||||||||||||||
Field Types | ||||||||||||||
Primitives, Wrappers | ||||||||||||||
java.lang.String etc | ||||||||||||||
java.lang.Enum | ||||||||||||||
java.util.Date etc | ||||||||||||||
java.lang.Object | ||||||||||||||
java.io.Serializable | ||||||||||||||
java.util.Collection | ||||||||||||||
java.util.Map | ||||||||||||||
Arrays | ||||||||||||||
Interfaces | ||||||||||||||
Type Converters | ||||||||||||||
Type Converter : auto-apply | ||||||||||||||
Type Converter : multicolumn | ||||||||||||||
Queries | ||||||||||||||
JDOQL evaluated in memory | ||||||||||||||
JDOQL evaluated in datastore [5] | ||||||||||||||
JDOQL of candidate interface | ||||||||||||||
JDOQL Polymorphic queries | ||||||||||||||
JPQL evaluated in memory | ||||||||||||||
JPQL evaluated in datastore [5] | ||||||||||||||
SQL [6] | ||||||||||||||
Stored Procedures | ||||||||||||||
JDOQL Bulk Update | ||||||||||||||
JDOQL Bulk Delete | ||||||||||||||
JPQL Bulk Update | ||||||||||||||
JPQL Bulk Delete |
[1] represents partial implementation.
[2] - when a collection/map/array is "backed" it can put individual elements in the
datastore at once rather than writing everything, and additionally can control how the elements
are retrieved
[3] represents partial implementation.
[4] means that datastore doesn't explicitly
support inheritance but "complete-table" is the nearest to what happens.
[5] means partially evaluated in datastore
and remains evaluated in memory.
[6] means supports some SQL syntax.
[7] Using Cumulus4j plugin for DataNucleus
[8] The embedded object is stored nested in the datastore under the owner object