The 2.0 release of AccessPlatform is available under the Apache 2 license from our download page
Version 2.0 includes the following over 1.1
Addition of plugin for persistence to HBase (HADOOP) datastores
Support for persistence to Amazon S3 datastores
Support for persistence to Oracle Timesten datastores
Addition of plugin for persistence of JodaTime types
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)
Cache : Support for pinning/unpinning of query results with Memcache/javax.cache
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).
Enhancer : add ability to generate PK classes (including composite)
JDO : Support for JDO 2.3 Query cancel, and datastore read/write timeout
JPA : Support for extended persistence context
JPA2 : Support for metamodel API
JPA2 : Support for bean validation API
JPA2 : Support for various JPQL keywords
JPA2 : Support for 1-N FK bidirectional relations
JPA2 : Support for 1-N collection/map of non-persistable objects.
JPA2 : Support for TypedQuery
RDBMS : Support for update/delete-by-query for JPQL
RDBMS : Rewritten 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.
RDBMS : Rewritten 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.
No further releases
Jul 1st 2010 : Version 2.0.5 includes the following changes
Fix to persistence of BLOBs/CLOBs on Oracle for some corner-case relationships
Apr 22nd 2010 : Version 2.0.4 includes the following changes
Fix to support non-standard SQL statements (stored procs, statements not starting with SELECT/INSERT/UPDATE/MERGE/DELETE)
Fix to the query in-memory evaluator to support aggregate names in upper or lower case
Fix to a couple of situations where a versioned object can be returned to the user without the version set
Fix to reset the version of an object on rollback()
Fix to SCOListIterator
RDBMS : Fix to generation of indexes for reference fields when having a FK per implementation so that the index is created for the implementations FK only
JDOQL2 : Fix to use of input parameters with multiple columns
Enhancer : when using Java6 and having the enhancer in the CLASSPATH default to not enabling the annotation processor to enhance the class(es) being compiled
Apr 1st 2010 : Version 2.0.3 includes the following changes
Fix to a typo in the use of ConnectionFactory when defining the datastore as a DataSource
Cleanup to process of creation of L1/L2/Query caches
Fix to use of Extent to close all iterators correctly
Fix to generic compilation of cast expressions
Added checks on invalid use of keywords during generic compialtion
Fix to generic compilation of {array}.length
Fix to getParent() of class/package metadata of JDO Metadata API
Fix to use of set() on ListIterator obtained from list wrapper
Fix to persistence of object with reference to the same object
RDBMS : having expression that are not boolean should throw XXXUserException in JDOQL2
RDBMS : fix to use of parameters for range and passed in as unnamed to API
RDBMS : fix to caching of JDOQL2 queries when using String.matches with input parameter
RDBMS : fix to not create indexes for serialised field (problem on MySQL)
Mar 6th 2010 : Version 2.0.2 includes the following changes
Fix to the auto-generation of PK classes by the enhancer for some field types.
Fixes to generic compilation of collection.contains when using variables
Support for in-memory query evaluation of Enum.toString() and Enum.ordinal()
Fixes to in-memory query evaluation of boolean predicates, and loading of fields
Fix to use of result class with constructor with arguments when one argument is null
Support for use of encrypted passwords in persistence properties
RDBMS : Fix to handling of FKs when specified on fields
Support for persisting java.awt.Color/Point/Rectangle and java.util.BitSet field types as String
RDBMS : JDOQL2 - Fixes to use of Extent for no concrete classes, subclass-table inheritance, and persistence interface cases
RDBMS : JDOQL2 - Support for use of variables
RDBMS : JDOQL2 - Support for Collection.contains on embedded fields
RDBMS : JDOQL2 - Support for binding parameter type via Collection.contains, Map.containsXXX methods
RDBMS : JDOQL2 - Detect result clauses that are multi-valued and throw exception
RDBMS : JDOQL2 - Fixes to allow many complex queries that failed with "JDOQL" to work with this new implementation.
RDBMS : JDOQL2 - Fix to String.matches escape clause
JPA : Support for CONCAT methods with Criteria Query
JPA : Support for COALESCE methods with Criteria Query
JPA : Support for function() method with Criteria Query
JPA : Support for joins specified using string name with Criteria Query
JPA : Support for negated predicates with Criteria Query
JPA : Support for subqueries with Criteria Query
Excel : Support persistence of Enum fields
Excel : Support for persistence of relation fields (as per ODF plugin)
Excel : Fixes to persistence of Date/Calendar types
Excel : Fixes to handling of SCO fields so they are wrapped correctly
Excel : Upgrade Apache POI requirement to 3.6+
ODF : Fixes to handling of SCO fields so they are wrapped correctly
ODF : Fixes to persistence of Date/Calendar types
ODF : Support persistence of Enum fields
XML : Fix to persistence of Enum fields
Feb 6th 2010 : Version 2.0.1 includes the following changes
Support for JPA2 Criteria query API (doesn’t yet support subqueries, and some less useful query builder methods)
Change all primitive wrapper constructor usage to use class valueOf() for efficiency
Fix to annotation processing to ignore all unsupported class annotations, and to correctly handle methods called get(), is()
Complete generic compile of JPQL TRIM and LIKE keywords, and support COALESCE, NULLIF keywords
Add support for in-memory query evaluation of COALESCE/NULLIF keywords
Update in-memory query evaluator to load fields where needed
Minor fixes to JDO getObjectById to pass new tests in JDO2.3 TCK
Minor changes to JDO timeout setter methods to pass new tests in JDO2.3 TCK
Fix to L2 cache retrieval of relation field to use the value
Fix to use of @Persistent and @Extension on a field, so that the settings are respected
Clean up of generic query compilation expressions to not use SymbolTable before bind()
XML : Fix to handling of empty XML file when searching for an object
RDBMS : respect "indexed" value of false when creating indexes
RDBMS : fix to SQL embed extension so we have SQL_boolean, SQL_numeric static functions
RDBMS : support for JPQL COALESCE, NULLIF functions
RDBMS : fix to JPQL to not add dup joins when defined in FROM clause and also from result
RDBMS : JPQL - support for ESCAPE on LIKE, and support for all TRIM options
Add support for persisting some java types as Long where no native handling
HBase : better handling of update to not delete records
DB4O : upgrade to 7.12 and above
Jan 9th 2010 : Version 2.0 RELEASE includes the following changes
Align to recent changes in JDO2.3 timeout API
Fix to Spatial handling of JTS types
Support for many spatial methods with the rewritten RDBMS JDOQL/JPQL query mechanism
Dec 7th 2009 : Version 2.0 Milestone 4 includes the following changes
Require use of a JPA2 jar when used for JPA persistence
Change handling of JDO @PrimaryKey to not require @Persistent for non-default persistent fields
Change generic compilation of subqueries, particularly for JPQL, to allow for multi-level primary expression
Change generic compilation of JPQL "LOCATE" to handle multi-level primary expressions
Fix to JDO PersistenceManagerProxy for named queries (typo)
Provide framework for bulk object retrieval (available to datastore-specific plugins)
Fix handling of query parameters to allow for use of parameters in subqueries
Respect "RetainValues" setting for objects that are deleted (so field values can be retained after the transaction commits, and the object is deleted).
Add support for PMF/EMF singleton pattern, via persistence property
Add support for case-insensitive persistence properties (previously all were case sensitive)
JPA2 : Support for "Metamodel" API
JPA2 : Support for TypedQuery
JPA2 : Support for Bean Validation
JPA : Fix to runtime enhancer
Enhancer : add ability to turn on/off capabilities
Enhancer : add ability to generate PK classes (including composite)
Enhancer : add ability to turn off generation of default constructor
Enhancer : add short form of "persistenceUnit" argument
RDBMS : Change to use "JPQL2" implementation by default since it passes the JPA1 TCK
RDBMS : Fix to JDOQL2/JPQL2 for case where multiple classes share a table and use a discriminator
RDBMS : Support for embedded fields in JDOQL2/JPQL2
RDBMS : Query range not working for Oracle now fixed
RDBMS : Fix to FROM join in JPQL2 for second and subsequent joins
RDBMS : Add support to JPQL2 for subquery FROM clauses with multiple joins
RDBMS : Fix support in JPQL2 for "COUNT (DISTINCT …)"
RDBMS : Support for JPA2 "TYPE" in JPQL2 implementation
RDBMS : Support for "StringExpression == EnumLiteral" in JDOQL2/JPQL2
RDBMS : Change to "persistenceUnit" option of SchemaTool to allow short form
RDBMS : Fix for read of null BLOB with Oracle
Spatial : fix to M2 dependencies to make some optional
HBase : add security handling to cater for issues in HBase itself
Maven2 plugin : Support for enhancement generating PKs, and turn on/off default constructor
Oct 24th 2009 : Version 2.0 Milestone 3 includes the following changes
Allow override of basic settings of DFG, default persistent for java types
Fix to L2 cache handling to evict deleted object
Level 2 Cache is now enabled by default (soft)
Level 1 Cache default is now changed to soft
Support for max size on weak/soft Level 2 caches
Generic compile updated for JPQL "EMPTY"/"LIKE"/"SIZE" to allow for multi-level primaries
Generic compile updated for JPQL "FROM" to chain nodes correctly
Generic compile updated for JPQL Object/Sum/Avg/Min/Max/Count to allow for case-insensitive
Generic compile updated for JPQL to allow for case-insensitive aliases
Generic compile updated for JPQL to fix escape sequence
Generic compile of JPQL subqueries to correctly allow for ALL/ANY/SOME/EXISTS forms
Generic compile support for AS aliases in result clause
Generic compile support for "new XXX().method" constructs
Generic compile support for JPQL "IN" taking multi-value parameters (JPA2)
Generic compile fix for JPQL "MOD"
Generic compile fix for JPQL "NOT" being applied incorrectly
Generic compile support for JPQL "TYPE" syntax (JPA2)
Generic compile fix for specification of result class in single-string form not being respected
Ignore all unsupported annotations
Rewrite of query in-memory method invocations handler to match the RDBMS style type-method
Fix to handling of non-transactional objects at pm close to move through lifecycle correctly
Support for JDO Query.cancel(Thread)
JPA : fix to mark transaction for rollback only on error
JPA : Support @Column length correctly
RDBMS : JDOQL2 support for String concatenation, and support for parameter defined as supertype but passed in as subtype
RDBMS : JDOQL2/JPQL2 support for Oracle NLS sorting
RDBMS : JDOQL2/JPQL2 support for result of type DyadicExpression
RDBMS : JDOQL2/JPQL2 support for result expression aliases
RDBMS : JDOQL2/JPQL2 fix handling of result new object to handle objects with composite PKs
RDBMS : JDOQL2/JPQL2 fix to handling of boolean expressions in ==/!=
RDBMS : JDOQL2/JPQL2 fix to handling of mappings using non-default datastore mapping (e.g Date persisted as VARCHAR)
RDBMS : JPQL2 fix to handling of ANY/ALL/SOME/EXISTS
RDBMS : JPQL2 fix to bulk update to allow DyadicExpression/PrimaryExpression in SET clause
RDBMS : Fix to Schematool to remove possible dups with bidirectional relations
RDBMS : Support for user-defined primary key constraints on join tables
RDBMS : Fix to support persisting Boolean as SMALLINT/TINYINT
JSON : support for Amazon S3 datastores
HBase : upgrade to HBase 0.20
HBase : performance improvements, including connection pooling and create schema only once
HBase : support for column families
Excel : Use lazy loading when retrieving candidate instances
ODF : Fix to delete of an object
ODF : Use lazy loading when retrieving candidate instances
ODF : Support for persistence of null fields and retrieval as null
ODF : Support for persistence/retrieval of Date fields
XML : Use lazy loading when retrieving candidate instances
Sept 11th 2009 : Version 2.0 Milestone 2 includes the following changes
Addition of control over the Locale used for logging messages
Add support for "embedded='true'" to mean embed the field - so the user doesn’t have to specify the 'embedded' element also
Bug fix to handling of embedded collections
Fix to generic query compilation for words starting "new"
Fix to JDOQL compilation of subquery FROM clause
Fix to the attach of nested embedded objects
Improvements to the query results cache to allow pinning/unpinning and to not validate
Fix to JTA handling introduced in M1 release
Add support for "detachAllOnRollback"
Removal of unnecessary flush on 1-1 relation
Bug fix to usage when invoked path has "+" symbol
Addition of plugin for persistence of primary JodaTime types, and simple querying for RDBMS
Cache : Support for pinning/unpinning of query results with Memcache/javax.cache
Enhancer : Bug fix to return code from enhancer when run from command line
JPA : Support for JPA "extended persistence context"
JPA : Fix to use of @EmbeddedId in extended persistence context
JPA : Support for optional attribute of @ManyToOne
LDAP : Support for persistence of recursive object graph to hierarchical structure
RDBMS : Addition of support for persistence to Oracle TimesTen datastore (Anton Troshin)
RDBMS : JDOQL2 support for "SELECT this" queries, and DISTINCT
RDBMS : JDOQL2 support for temporal queries
RDBMS : JDOQL2 support for subqueries
RDBMS : JPQL2 support for subqueries
RDBMS : JPQL2 support for bulk update/delete by query
RDBMS : SQL API fixes to cater for composite PKs and ordering of expressions
RDBMS : Improvements to choice of whether to use UNION or discriminator for inheritance detection
RDBMS : Some fixes to handling of temporal types to add more flexibility
Jul 30th 2009 : Version 2.0 Milestone 1 includes the following changes
Addition of plugin for persistence to HBase (HADOOP) datastores
Allow query execution in separate thread to allow for cancel/timeout hooks
Change default for non-transactional read/write to true for JDO
Support atomic non-transactional write persist/delete operations
Support for in-memory evaluation of queries with variables
Support for in-memory evaluation of queries with List.get(), and ranges using parameters
Drop support for various extensions that were standardised during version 1.1 timeframe
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).
Internal changes to implementation of StoreManager making it even easier to provide support for new datastores
Bug fix for annotation of unmapped columns in JDO
Refactor all legacy query classes into own package for removal during 2.0 timeline
Bug fix to JDO Metadata "index" when unique flag not defined
RDBMS : Fix to COMPLETE_TABLE inheritance when used with JDOQL2
RDBMS : Change default auto-start mechanism to "None"
RDBMS : JDOQL2 support for input params with multiple columns
RDBMS : JDOQL2 support for List.get()
RDBMS : JDOQL2 support for range defined with input parameters
RDBMS : JDOQL2/JPQL2 support for views
RDBMS : Revised handling of nullability on joins
RDBMS : Support for table creation with columns having default of NULL
RDBMS : Support for specifying the order of columns in DDL
Much internal refactoring has also been performed to remove unneeded components or to simplify the API’s for things needed in the 2.0 timeline. Any use of internal API’s by applications will likely need changes.