Andy has posted 14 posts at DZone. You can read more from them at their website. View Full User Profile

DataNucleus AccessPlatform 2.0.0 Released

  • submit to reddit

DataNucleus AccessPlatform 2.0.0 has just been released. AccessPlatform provides access to a range of datastores for Java applications using JDO/JPA API's, as well as providing a REST API. It is fully compliant with JDO1, JDO2, JDO2.1, JDO2.2, JPA1, as well as providing complete JDO2.3 support, and the majority of JPA2. It currently supports persistence to RDBMS, db4o, NeoDatis, LDAP, XML, Excel, ODF, JSON, Amazon S3, HBase (HADOOP), as well as Google AppEngine BigTable.

AccessPlatform additionally allows configuration of classes to be persisted using JDO annotations/XML/API or JPA annotations/XML providing access to both JDO and JPA persistence APIs regardless of which configuration method was chosen, offering flexibility not seen in any other persistence tool. Querying of the supported datastores can be performed using JDOQL, JPQL or SQL (dependent on the datastore). By making use of standardised APIs, the process of swapping persistence from one datastore to another is a simple URL change when specifying the datastore. AccessPlatform is made up of a series of OSGi compliant jars, and can be utilised in J2SE, J2EE, or OSGi container environments. By using OSGi together with Eclipse extension-points, DataNucleus is highly extensible so if you wanted to provide support for your own datastore then this would be a relatively simple procedure. AccessPlatform is licensed under the flexible Apache 2 license.

AccessPlatform 2.0 provides the following over and above what AccessPlatform 1.x provides :-

  • Significantly reworked internal API's to aid easier support for other datastores, and datastore features in the future
  • Support for persistence to Amazon S3
  • Support for persistence to HBase (HADOOP)
  • Support for persistence to Oracle Timesten
  • Support for persistence of JodaTime fields
  • Support for auto-generation of primary key classes during enhancement
  • Change default for non-transactional read/write to true for JDO
  • Support atomic non-transactional write persist/delete operations
  • Level 2 Cache is now enabled by default (soft)
  • Split query cache into 3 components : generic compilation, datastore compilation and query results. Added API for managing caching of query results (using JDO or JPA).
  • Cache : Support for pinning/unpinning of query results with Memcache/javax.cache
  • Support for JDO 2.3 Query cancel, and datastore read/write timeout
  • Support for explicit JPA extended persistence context
  • Support for JPA2 metamodel API
  • Support for bean validation with JPA2
  • Support for various new JPA2 JPQL keywords
  • Support for JPA2 1-N FK bidirectional relations
  • Support for JPA2 1-N collection/map of non-persistable objects.
  • Support for JPA2 TypedQuery
  • Support for update/delete-by-query for RDBMS (JPQL)
  • Rewritten RDBMS JPQL implementation building on generic query compiler. This is now the default JPQL implementation for RDBMS, and can be used with the query caching mechanism.
  • Rewritten RDBMS JDOQL implementation building on generic query compiler. This is not currently the default JDOQL implementation but is available to be used, and can be used with the query caching mechanism.
  • LDAP : Support for persistence of recursive object graph to hierarchical structure
  • Add support for PMF/EMF singleton pattern, via persistence property
  • Spatial : Many fixes to handling of JTS types.
  • Many bug fixes, and minor feature additions.

Documentation is available to view online (HTML) or available to download (HTML/PDF).

Limited free support for AccessPlatform is provided by way of our forum. Commercial support and consulting is also provided.

Thanks to NightLabs for their continued hosting, and to SourceForge for source code repositories. Finally, thanks to everyone who has helped in the development of AccessPlatform 2.0 over the last 10 months.

Average: 5 (1 vote)
Published at DZone with permission of its author, Andy Jefferson.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Nice Robot replied on Thu, 2010/01/14 - 1:21am


Andy Jefferson replied on Thu, 2010/01/14 - 4:35am in response to: Nice Robot

You've got so much flexibility now and I can see that you're overwhelmed by it all. Either that or you're a "representative" of an RDBMS vendor and not happy to see your customers being able to choose their datastore without having to change their code :-)

ted stockwell replied on Thu, 2010/01/14 - 10:57am

I am curious about the Amazon S3 datastore. Is JPQL fully supported? Or are there limitations to what queries can do (like with the Google BigTable datastore)?

Andy Jefferson replied on Thu, 2010/01/14 - 11:23am in response to: ted stockwell

I didn't have anything to do with that plugin personally, but (looking at the code) it actually uses the DataNucleus in-memory query evaluator ... so instances of the candidate type are retrieved and then evaluated against the query. Hence pretty much complete syntax is supported, but with the limitation that instances are instantiated before evaluation. Since this is a first release of that plugin it is non-ideal in the context of efficiency, but can easily be extended in a future release to perform as much as possible in the datastore and then just use in-memory evaluation for unsupported datastore syntax.

GAE/J could easily adopt the same policy and, with that, provide pretty much complete JDOQL/JPQL support - and I raised an issue for that on Google some time ago

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.