| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>JSR220-ORM Project Plan</TITLE> |
| <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <LINK href="Plan_files/eclipse.css" type="text/css" rel="stylesheet"> |
| <META content="MSHTML 6.00.2800.1400" name="GENERATOR"></HEAD> |
| <BODY text="#000000" vLink="#551a8b" aLink="#ff0000" link="#0000ee" bgColor="#ffffff"> |
| <TABLE cellSpacing="5" cellPadding="2" width="100%" border="0"> |
| <TBODY> |
| <TR> |
| <TD align="left" width="60%"><FONT class="indextop"></FONT><STRONG><FONT face="Verdana" size="6">JSR220-ORM |
| Plan</FONT></STRONG><BR> |
| <FONT class="indexsub">A Technology Project Proposal [updated June |
| 21st 2005]</FONT></TD> |
| <td width="40%"><img height="86" hspace="50" src="/images/Idea.jpg" width="120" |
| align="center"></td> |
| </TR> |
| </TBODY></TABLE> |
| <TABLE cellSpacing="5" cellPadding="2" width="100%" border="0"> |
| <TBODY> |
| <TR> |
| <TD vAlign="top" align="left" bgColor="#0080c0" colSpan="2"><B><FONT face="Arial,Helvetica" color="#ffffff">Introduction</FONT></B></TD> |
| </TR> |
| <TR> |
| <TD> |
| <P>The JSR220-ORM Project's goal is to provide tooling for |
| an implementation of the JSR 220 persistence and JSR 243 specifications |
| integrated with the Eclipse platform. Further, the goal of the project is to |
| track the changes to these specifications, so that in addition, as they merge |
| together towards a common persistence standard, appropriate tooling will be |
| fully implemented by this project. The over arching goal of this project is to |
| provide visual development tools that facilitate round trip engineering when |
| using the JSR 220/243 approach to persistence. Further, to provide an |
| implementation that is extensible to accommodate new types of input and |
| generate artifacts for alternative runtimes.</P> |
| <P> </P> |
| </TD> |
| </TR> |
| </TBODY></TABLE> |
| <TABLE cellSpacing="5" cellPadding="2" width="100%" border="0"> |
| <TBODY> |
| <TR> |
| <TD vAlign="top" align="left" bgColor="#0080c0" colSpan="3"><B><FONT face="Arial,Helvetica"><FONT color="#ffffff">Dependencies</FONT></FONT></B></TD> |
| </TR> |
| <TR> |
| <TD colSpan="3"> |
| <P>The JSR220-ORM Project is directly tied to the JSR 220 and 243 specifications. |
| Further it will undoubtedly have dependencies on or provide dependencies to |
| other sub projects within the Eclipse <A href="/proposals/eclipse-dtp/main.html"> |
| Data Tools Project</A> and <A href="/webtools/">Web |
| Tools Project</A> . Additionally, elements of the project will depend on |
| JDK 1.5 for annotation support required in JSR 220.</P> |
| <P> </P> |
| </TD> |
| </TR> |
| </TBODY></TABLE> |
| <TABLE cellSpacing="5" cellPadding="2" width="100%" border="0"> |
| <TBODY> |
| <TR> |
| <TD vAlign="top" align="left" bgColor="#0080c0"><B><FONT face="Arial,Helvetica"><FONT color="#ffffff">Milestones</FONT></FONT></B></TD> |
| </TR> |
| <TR> |
| <TD> |
| <P><STRONG>Milestone 1 plan:</STRONG> April 18th, 2005 Release initial Versant Open |
| Access - 4.0 commercial implementation of EJB 3.0 and JDO 2.0 ( JSR 220/243 ) |
| to the open source community which includes initial Eclipse integration ( |
| lacking integration with other Data Tool Projects ) for public review, comment |
| and contribution. This is a proposal phase opportunity for the |
| community to provide feedback on the tooling and get involved.</P> |
| <P><STRONG>Milestone 2 plan:</STRONG> August 8th, 2005 Release an Eclipse platform |
| integrated version which is using core code components of other relevant |
| Eclipse sub-projects including but not limited to <A href="/proposals/eclipse-dtp/main.html"> |
| Data Tools Project</A> and <A href="/webtools/">Web |
| Tools Project</A> . |
| </P> |
| <P>The goal of this milestone is to provide: |
| </P> |
| <UL> |
| <LI> |
| Forward engineering capabilities for applications using the POJO persistence |
| approach. This includes input source meta data driven pattern mapping |
| which allows a target relational schema to be available to live ER diagrams for |
| mapping to existing database schema. It also includes auto generation of |
| relational schema for new databases. |
| <LI> |
| To remove the prior Swing dependency and provide a 100% SWT based |
| implementation of the visual artifacts for the tooling |
| implementation. |
| <LI> |
| The ability to enable a project for ORM configuration and a framework for |
| associating a runtime plug-in with a project. To show one |
| example of how to use the framework using the Versant open source EJB |
| runtime. |
| <LI> |
| A framework for the context sensitive mapping GUI to reflect the |
| capabilities of the runtime currently associated with an enabled project. To |
| show one example using the Versant open source EJB runtime |
| illustrating how to use this context sensitive GUI framework. |
| <LI> |
| Synchronized views of mapping information ( source code editors, mapping |
| pattern editors, live ER editors ) where a change in any view is reflected in |
| the others. So, for example if someone adds an annotation to the source |
| code the appropriate mapping possibilities automatically appear in the mapping |
| view and the default mapping is selected and represented by a live ER |
| diagram. This approach is taken so that if someone does not use JDK |
| 1.5 and does not have annotation available to them that the alternate views can |
| still be used to provide mapping. In addition, if a non Java developer is |
| performing the relational mapping exercise or query execution optimization, |
| they do not need to explicitly edit the Java source code. This |
| allows Java developers to use a one click mapping approach deferring database |
| schema design to database architects. |
| <LI> |
| An extensible framework for allowing vendors to provide customizable input |
| output capabilities to accommodate alternative runtimes. Use this |
| framework to show an example of outputting meta data for the Versant open |
| source EJB runtime. |
| <LI> |
| Support for Oracle, MySQL and Derby databases. |
| <LI> |
| All of this is driven by an EMF model that vendors may extend to suit |
| their needs. |
| </LI> |
| </UL> |
| <P><STRONG>Image 1: </STRONG>The following block diagram gives an |
| overview of the tooling approach and to integration with the Eclipse platform.</P> |
| <P> |
| <TABLE id="Table1" height="60" cellSpacing="1" cellPadding="1" width="744" align="center" |
| border="0"> |
| <TR> |
| <TD height="23"></TD> |
| <TD height="23"> |
| <P align="center"><IMG alt="" src="ORM_Block_diagram.bmp"></P> |
| </TD> |
| <TD height="23"></TD> |
| </TR> |
| </TABLE> |
| </P> |
| <P> |
| </P> |
| <P><STRONG>Milestone 2 use case coverage: </STRONG> |
| </P> |
| <UL dir="ltr" style="MARGIN-RIGHT: 0px"> |
| <UL> |
| <LI> |
| Auto generation of mapping for a domain model. |
| <UL> |
| <LI> |
| Project association to data source |
| <LI> |
| Project binding to selected JSR200/243 runtime |
| <LI> |
| Source code annotation of persistent classes |
| <LI> |
| Source code annotation of persistent class attributes |
| <LI> |
| Property based meta data management of persistent classes |
| <LI> |
| Auto generation of DDL for selected data source |
| <LI> |
| Auto generation of Tables for final DDL |
| <LI> |
| Generation of artifacts into Eclipse project for runtime execution</LI></UL> |
| <LI> |
| Customization of mapping for a domain model to existing relational schema |
| <UL> |
| <LI> |
| Project association to data source |
| <LI> |
| Project binding to selected JSR220/243 runtime. |
| <LI> |
| Source code annotation of persistent classes |
| <LI> |
| Source code annotation of persistent class attributes |
| <LI> |
| Property based meta data management of persistent classes |
| <LI> |
| Load database meta data into Eclipse RDB model |
| <LI> |
| Live ER diagrams context sensitive to loaded meta data |
| <LI> |
| Customize tables and columns to classes and attributes. |
| <LI> |
| Generation of artifacts into Eclipse project for runtime execution</LI></UL> |
| </LI> |
| </UL> |
| </UL> |
| <P><STRONG>Image 2: </STRONG>The following Eclipse screen shots give an idea |
| of the developer experience and feature set of the Milestone 2 plug-in.</P> |
| <P> |
| <TABLE id="Table2" height="27" cellSpacing="1" cellPadding="1" width="744" align="center" |
| border="0"> |
| <TR> |
| <TD></TD> |
| <TD> |
| <P align="center"><IMG alt="" src="eclipse_orm2.PNG"></P> |
| </TD> |
| <TD></TD> |
| </TR> |
| </TABLE> |
| </P> |
| <P><STRONG>Milestone 3 plan:</STRONG> October 2005 Release updates that include |
| complete support for reverse engineering of existing relational schema, |
| EJBQL visual query builder, support for named queries, support for custom fetch |
| group configuration. |
| </P> |
| <P><STRONG>Milestone 3 use case coverage:</STRONG></P> |
| <UL dir="ltr" style="MARGIN-RIGHT: 0px"> |
| <UL> |
| <LI> |
| Reverse engineering of existing relational schema. |
| <UL> |
| <LI> |
| Project association to data source |
| <LI> |
| Project binding to selected JSR200/243 runtime |
| <LI> |
| Load database meta data into Eclipse RDB model |
| <LI> |
| Auto generation of classes with appropriate annotations for existing relational |
| schema </LI></UL> |
| <UL> |
| <LI> |
| Property based meta data management of persistent classes </LI></UL> |
| <UL> |
| <LI> |
| Generation of artifacts into Eclipse project for runtime execution</LI></UL> |
| </LI> |
| </UL> |
| </UL> |
| <P dir="ltr">The above Milestones are visible and achievable. Other elements |
| including <A href="/proposals/eclipse-dtp/main.html">Data |
| Tools Project</A> and <A href="/webtools/">Web Tools |
| Project</A> integration and changes in the evolving JSR 220 |
| specification are less definite. As the months progress, it is expected that |
| these other issues will become clearer and community involvement will be better |
| understood so that ongoing milestones can be established. It is also expected |
| that community involvement will reprioritize deliverables and timelines of |
| milestones |
| </P> |
| <P> </P> |
| </TD> |
| </TR> |
| </TBODY></TABLE> |
| </BODY> |
| </HTML> |