Design Specification: JPA 2.1 Formalized DDL generation support
|Date||Author||Version Description & Notes|
|05 September 2012||Gordon Yorke||Initial Doc creation|
In previous versions DDL generation was present in the specification but was not standardized and was not required. The next iteration of the Java Persistence API specification has added standardized provider DDL generation and made DDL generation a requirement.
DDL Generation is the scripting or direct database execution of database object creation SQL (Create Table, Create Index, ...) from metadata or user supplied scripts. The specification defines many mapping artifacts (OneToOneMapping, JoinColumn, etc) that contribute metadata to allow the provider to generate the DDL to define the structure of the database objects.
To implement the requirements of DDL generation and execution as defined in the specification. This includes but may not be limited to the Database objects:
- Columns for all mapping types
- Sequence Generators
- Entity tables
- Relationship tables
Support reading and executing user packaged DDL scripts and the generation of DDL scripts. Support processing configured target database information Support for a DDL Generation connection to be provided by the application or the container.
Design / Functionality
Existing tests should be verified to ensure they include tests for creation of those database objects listed in the requirements list and any others included as part of the specification. Any untested areas should have additional tests added. Tests to execute and generate DDL scripts Tests for identifying target databases correctly.
New properties and new API are present in the specification to support DDL generation. These should behave as specified in the specification.
- Metadata processing of new annotations w/ implementation in core
- approx 4 days
- Implement support for DDL script loading, execution and generation
- approx 3 days
- Implement handling of DDL generation connection
- approx 3 days
- approx 6 days
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|
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|
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.