Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Development/JPA 2.0/metamodel api"
m (→Concepts) |
m (→JPA 2.0: MetaModel API) |
||
Line 37: | Line 37: | ||
== Analysis == | == Analysis == | ||
=== Concepts === | === Concepts === | ||
+ | ====Metamodel?==== | ||
+ | *In the context of EclipseLink a metamodel is an abstract view of the managed classes in the persistence unit. | ||
+ | *We use the metamodel to construct a runtime query structure that is object based. | ||
+ | ====Relation to JPQL?==== | ||
+ | |||
== Functional Requirements == | == Functional Requirements == | ||
Line 59: | Line 64: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | === Analysis Constraints === | ||
== Design == | == Design == | ||
− | === | + | === API === |
− | + | ====Metamodel and Criteria packages interfaces API==== | |
− | = | + | |
− | ===Metamodel and Criteria packages interfaces API=== | + | |
The following static UML class diagram that illustrates the relationship between the Criteria and Metamodel API's will serve as a basis for the metamodel API part of this work. | The following static UML class diagram that illustrates the relationship between the Criteria and Metamodel API's will serve as a basis for the metamodel API part of this work. | ||
[[Image:Uml_class_diagram_metamodel_criteria_packages.gif]] | [[Image:Uml_class_diagram_metamodel_criteria_packages.gif]] | ||
− | ===Annotation Processors=== | + | ====Annotation Processors==== |
We require a design time annotation processing tool to create metamodel class files X_. | We require a design time annotation processing tool to create metamodel class files X_. | ||
====APT==== | ====APT==== | ||
[http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/apt.html APT] is the annotation processing tool that has been shipped since Java 5. | [http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/apt.html APT] is the annotation processing tool that has been shipped since Java 5. | ||
− | == | + | == Use Cases == |
− | + | ||
== Implementation == | == Implementation == | ||
== Testing == | == Testing == | ||
− | |||
== Open Issues == | == Open Issues == | ||
Line 110: | Line 113: | ||
|} | |} | ||
+ | == Documentation == | ||
+ | Wiki and formal documentation links here. | ||
== Future Considerations == | == Future Considerations == | ||
During the research for this project the following items were identified as out of scope but are captured here as potential future enhancements. If agreed upon during the review process these should be logged in the bug system. | During the research for this project the following items were identified as out of scope but are captured here as potential future enhancements. If agreed upon during the review process these should be logged in the bug system. |
Revision as of 12:15, 4 March 2009
JPA 2.0: MetaModel API
Date | Committer(s) | Description |
---|---|---|
March 3, 2009 | gyorke | Initial feature template |
March 3, 2009 | mobrien | Start analysis |
Summary
In JPA 2.0 the specification has defined standard APIs for representing the structure of a persistence unit model. This is referred to at the MetaModel APIs. There are two main aspects to providing this functionality. The first is the runtime model accessed from EntityManagerFactory.getMetaModel() and the second is the APT generated meta model classes. Our first goal is to provide functionality for runtime access.
For details see section 5.2 and 5.3 of Proposed Final Draft.
Work Estimate
- Investigate EclipseLink Metamodel
- approx 3 days
- Develop implementations of MetaModel or refactor current metamodel
- approx 10 days
- APT investigation and prototype
- approx 5 days
- APT tooling/testing
- approx 10 days
Analysis
Concepts
Metamodel?
- In the context of EclipseLink a metamodel is an abstract view of the managed classes in the persistence unit.
- We use the metamodel to construct a runtime query structure that is object based.
Relation to JPQL?
Functional Requirements
Req# | Assumption# | Use Case# | Description |
---|---|---|---|
R1 | - | - | Support runtime Metamodel APIs |
R1.1 | - | - | |
R2 | - | - | Support APT generation of Canonical Metamodel classes |
R2.1 | - | - |
Analysis Constraints
Design
API
Metamodel and Criteria packages interfaces API
The following static UML class diagram that illustrates the relationship between the Criteria and Metamodel API's will serve as a basis for the metamodel API part of this work.
Annotation Processors
We require a design time annotation processing tool to create metamodel class files X_.
APT
APT is the annotation processing tool that has been shipped since Java 5.
Use Cases
Implementation
Testing
Open Issues
This section lists the open issues that are still pending that must be decided prior to fully implementing this project's requirements.
Issue # | Owner | Description / Notes |
---|---|---|
Decisions
This section lists decisions made. These are intended to document the resolution of open issues or constraints added to the project that are important.
Issue # | Description / Notes | Decision |
---|---|---|
Documentation
Wiki and formal documentation links here.
Future Considerations
During the research for this project the following items were identified as out of scope but are captured here as potential future enhancements. If agreed upon during the review process these should be logged in the bug system.