EclipseLink/Development/JPA 2.1
EclipseLink JPA 2.1 Implementation Status
This page contains a summary of features required for EclipseLink to implement JPA 2.1 (JSR 338) specification requirements. As the JSR 338 specification is currently a work in progress and none of the features completed under this task should be considered finalized until the final specification is approved. Any feature below could change substantially going forward.
Feature | Status | Links | Description | |
---|---|---|---|---|
JPA 2.1 Support | -- | bug 338610 | Will be closed when all feature are done. tracking bug | |
Criteria Bulk Update/Delete | Completed | bug 350469, outline | Implementations of Bulk Update and Delete in the Criteria Query framework | |
Stored Procedure Queries | Completed | bug 350487, outline | Definition and execution of Stored Procedures | |
JPQL - Arithmetic expressions with sub-queries. | Completed | bug 350597, outline | use subqueries as arguments for arithmetic expressions. | |
ConstructorResult support in SQLResultsetMappings | Completed | bug 350727, outline | Returning non Entity class instances from Native SQL queries. | |
Runtime definition of Named Queries | Completed | bug 350728, outline | Allows queries created at runtime to be recorded as Named Queries | |
Generic Query function support | Completed | bug 350843, outline | Provides JPQL support for SQL functions not specified in the spec | |
Injectable Entity Listeners | Completed | bug 366748, outline | Allows queries created at runtime to be recorded as Named Queries | |
Joins with On clause | Completed | bug 367452 , outline | Allows refinement of a Join expression through the use of the ON clause | |
Treat support | Complete | bug 374771 , outline | Allows relationship joins to be treated as a subclass of the join type. | |
Converter | Completed | bug 374688 , outline | Provides conversion from an attribute type and value to the corresponding database type and value | |
Unsynchronized Persistence Contexts | Completed | bug 374818 , outline | A new type of Persistence Context will be added to the specification that does not automatically associate with a currently active transaction. | |
DDL Generation | Complete | bug 389090 , outline | ||
Entity Graph | Complete | bug 397772 , outline |
Bug Queries and Reports
Goals/Requirements
EclipseLink will introduce JPA 2.1 features with the following goals in mind:
- Remain a compliant JPA 2.0 implementation during the development of 2.1 functionality. This is a major requirement.
- Conform with the Eclipse IP process and rules. This means that the use of any updated persistence libraries and their source must come into the project through proper IP review procedures.
- All new features involving changes to JPA's ORM-XML schema must be reflected in Eclipse-ORM.XML. This should be done in such a way that changes during the evolution of the specification are minimized.
- Where possible any new features added for JPA 2.1 should also be available to users of the native EclipseLink bootstraping. Accessibility through the native API can be limited to programmatic access and configuration.
- Where available EclipseLink users using JPA 2.0 or older will be able to access 2.1 preview functionality through native EclipseLink API or metadata
Types of Changes
The JPA 2.1 expert group is attempting to evolve this new specification to remain backwards compatible with JPA 1.0 and JPA 2.0. The scope of its work will involve changes of various types with different effects on EclipseLink.
- Metadata Changes
- New Annotations
- New structures in the persistence.xml XSD
- New structures in the ORM.XML XSD
- API Changes
- New interfaces
- New methods on existing interfaces
Development Approach
We will be developing this functionality within the main product stream. Specification defined interfaces will be created and packaged within a javax.persistence_2.1 bundle/jar for users who wish to preview the functionality. Our backward compatible with JPA 1.0 strategy is to be determined.
Metadata Changes
The following changes need to be handled keeping the backwards compatibility to JPA 1.0 goals in mind:
- New Annotations
- Modified Annotations
- Changes to the XML Schemas
- new Interfaces
- reference to new interfaces