Java Persistent Objects (JPOX)
is a fully-compliant Open Source implementation of the JDO1,JDO2,JDO2.1 and JPA1 specifications for transparent persistence of Java objects. It is Apache 2 licensed and usable with any JDK 1.3 or above. The aim of JPOX from the outset has been to provide the most standards compliant Java persistence engine around. JPOX allows persistence to all popular RDBMS datastores, as well as to DB4O
, and in the near future will support other datastores.
This JPOX 1.2.0 release provides compliance with JPA1, as well as a preview of the upcoming JDO2.1 standard. JPOX 1.2 will be the "reference implementation" (RI) for JDO2.1 once it is released (just like JPOX 1.1 was the RI for JDO2.0). The release has been 22 months in the making and there have been many changes during that time (not just for JDO2.1), including :
- Rearchitected plugin mechanism using OSGi MANIFESTs and Eclipse "extension-point"/"extension". Provides auto-discovery of capabilities at runtime. All JPOX plugin jars are now OSGi bundles, with the vast majority of the persistence process now configurable/overridable by the user using published interfaces.
- Support for persistence to DB4O datastores using JDO or JPA APIs
- Support for basic JDOQL querying of DB4O datastores
- JPA1 : Support for the JPA1 API providing EntityManagerFactory and EntityManager
- JPA1 : Support for JPQL
- JPA1 : Support for persistent properties
- JPA1 : Support for annotations and XML input mechanisms
- JPA1 extension : support for compound identity relations
- JPA1 extension : support for 1-N unidirectional FK relations
- JPA1 : Pass the JPA1 TCK
- JDO2.1 : Support for JDOQL subqueries
- JDO2.1 : Support for "CopyOnAttach" 'false' semantics for a further level of transparent persistence.
- JDO2.1 : Support for JDO2.1 annotations.
- JDO2.1 : Support for use of classes annotated with JPA1 annotations using JDO persistence.
- JDO2.1 : Support for use of JPA1 "persistence.xml" with JDO persistence.
- JDO2.1 : Support for persistent properties.
- JDO2.1 : Support for named PMFs.
- JDO2.1 : Pass the JDO2.1 TCK
- JDO2 : Support for "unmapped columns" (with no field)
- JDO2 : Support for non-transactional write.
- Rewritten Spatial plugin allowing persistence of the OGC Simple Feature Specification via JDO to MySQL/Postgresql/Oracle
- Rewritten transaction/connection handling
- Support for using JPQL with JDO persistence
- Support for using JPQL "TABLE_PER_CLASS" with JDO persistence.
- Support for using JPQL "ordered lists" with JDO persistence.
- Rewritten bytecode enhancer using ASM for size and speed.
- Support for dynamic fetch groups definable via API - proposal for JDO2.2
- New plugin allowing management using MX4J.
- Separation of support for RDBMS, and DB4O into their own plugins.
- Upgraded plugins for use of DBCP, C3P0, Proxool, EHCache, Coherence, SwarmCache, OSCache, SpringFramework with JPOX.
- Enhancement of the Maven1/Maven2/Eclipse plugins for JPOX, allowing easier deployment of Java persistence into the application development lifecycle.
- Significant performance improvements over JPOX 1.1
In addition to the zero cost of JPOX and its Apache 2 license, we also provide extensive documentation and an online support community (via our Forums). Thanks go to the companies/individuals who have contributed to JPOX during its 1.2 lifecycle, and in particular to Nightlabs
for their continued hosting. Thanks also to the Apache JDO
project for having the vision to pursue a specification that offers significant benefits over all other current specifications in the problem domain.