Currently, the JPA based model does not support the goal of providing pluggable persistence. The following proposed model structure should simplify the task of providing a non-jpa based persistence layer. The changes in this proposal represent the MINIMUM amount of work to complete the conversion. All other model changes should happen in a separate proposal.
Proposed Maven Module Structure
rave-project |__rave-components | |__rave-commons //Common utility & helper classes | |__rave-core //Core service, model & repository interfaces. Includes PURE POJO model implementations. | |__rave-jpa //JPA implementation of the Rave models repositories | |__rave-web //All web specific components |__rave-... //The rest stays as is
Functional Changes
- All repositories will be expected to translate to their own representations of objects (IE JPA Entities)
- The Interface for a model MUST be used
- The POJO implementations are to be used only when creation of a new model instance is required in the service or web layers
Method of Change
All changes to the code will be made in a branch. Integration of the branch into trunk will be done via lazy consensus with a 72 hour waiting period once all JPA entities have been converted to interfaces.