JPA 2.0 Development Process
JPA 2.0 Roadmap
The OpenJPA roadmap and iteration detail for developing JPA 2.0 functionality is documented here. The process to be used for this development effort will be documented on this Development Process page.
Overview
JPA 2.0 is currently being defined by the Java Community Process under JSR-317. As of 11/24/2008 the most recent public draft is dated 10/31/2008. Members of the Apache OpenJPA project continue to monitor and actively participate in JSR-317. OpenJPA has recently branched off its 1.x efforts and is targeting its next release, OpenJPA 2.0, to in addition to providing new features, be fully spec compliant with JPA 2.0. While the JPA 2.0 spec is still in the review process, the OpenJPA project will begin implementing JPA 2.0 capabilities as defined by the draft specification. This will help to ensure a timely delivery of JPA 2.0 functionality in addition to providing experience-based feedback to the JPA committee.
JPA 2.0 Highlights
The latest draft of the JPA 2.0 specification includes many updates to JPA, from minor updates to major functional enhancements. Some of these updates and enhancements include:
- Collections of embeddables and basic types
- Derived Identity support
- Relationship support within embeddables
- Enhancements to persistent map collection support
- Standard properties for query timeout and persistence configuration
- Lock mode configuration on entity manager and query
- Cache interface to access L2 cache
- Criteria API for programmatic query definition
- Many JPQL enhancements
Schedule
- Planning (in progress)
- Iteration 1 (Dec. 1 - Dec. 21)
- Holiday iteration (Dec. 22 - Jan. 2)
- Iteration 2 (Jan. 5 - Jan. 23)
- Milestone 1 release (Jan. 26 - Jan. 30)
- Iteration 3 (Jan. 26 - Feb. 13)
Contributions
The OpenJPA 2.0 release needs contributions in the areas of development, testing, and documentation. If you are simply interested in trying out new capabilities of JPA 2.0, contributing to the test suite is a great way to do that; while making a significant contribution to the project.
Process
- All new features, spec related or other improvements must have an corresponding JIRA. Large items should be broken down into manageable sub-tasks. The JIRA should include design details, decision rationality, and testing information.
- Use test driven development (write tests before code). Test driven development can be extremely beneficial for gaining an initial understanding the requirements of the feature and will help ensure that the feature is adequately tested. Too often, tests are the last thing to be written so they can end up incomplete or worse yet, forgotten. Test driven development in OpenJPA is now more feasible with the recent enhancement in OPENJPA-766.
- Documentation updates/additions, when necessary, must accompany new function.
- OpenJPA 2.0 development will be based on three week iterations (or sprints). Each iteration will include a set of new features and enhancements. Features must have accompanying tests and documentation and go through a code review. A feature must fit within the iteration period. Larger and/or complex tasks may need to be broken down such that they can be contributed as individual, consumable features. For example, JPA 2.0 defines relationship support within an embedded. If this task is deemed complex due to the need to support multiple relationship types, relationship type one-to-one could be made available in one iteration and the many-to-one relationship type could be added in subsequent iteration.
- A call for participation will be posted prior to the start of each iteration. An iteration plan will be composed based on who can participate and what they plan to contribute.
- Code reviews will be conducted using the standard Commit-Then-Review (CTR) process (for OpenJPA committers), unless a pre-commit code review is specifically requested. Artifacts submitted by non-committers must be reviewed before they are committed.