blob: c842c624f3395bca387c95ed07a1af17ba2def01 [file] [log] [blame]
<!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&nbsp;June
21st&nbsp;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&nbsp;tooling for
an&nbsp;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.&nbsp; Further, to provide an
implementation that is extensible to accommodate new types of input and
generate artifacts for alternative runtimes.</P>
<P>&nbsp;</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&nbsp;<A href="/webtools/">Web
Tools Project</A> . Additionally, elements of the project will depend on
JDK 1.5&nbsp;for annotation support required in JSR 220.</P>
<P>&nbsp;</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.&nbsp;&nbsp; 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&nbsp;<A href="/webtools/">Web
Tools Project</A> .&nbsp;
</P>
<P>The goal of this milestone is to provide:&nbsp;
</P>
<UL>
<LI>
Forward engineering capabilities for applications using the POJO persistence
approach.&nbsp; 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.&nbsp; 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&nbsp;for the tooling
implementation.&nbsp;
<LI>
The ability to enable a project for ORM configuration and a framework for
associating a runtime plug-in with a project.&nbsp;&nbsp;To show&nbsp;one
example of how to use the framework using the Versant open source EJB
runtime.&nbsp;&nbsp;
<LI>
A&nbsp;framework for the context sensitive mapping GUI to reflect the
capabilities of the runtime currently associated with an enabled project. To
show one example&nbsp;using the Versant&nbsp;open source EJB runtime
illustrating&nbsp;how to use this context sensitive GUI framework.&nbsp;
<LI>
Synchronized views of mapping information ( source code editors,&nbsp; mapping
pattern editors, live ER editors ) where a change in any view is reflected in
the others.&nbsp; 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.&nbsp;&nbsp; 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.&nbsp; 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.&nbsp;&nbsp;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.&nbsp; Use this
framework to show an example of outputting&nbsp;meta data for the Versant open
source EJB runtime.
<LI>
Support for Oracle, MySQL and Derby databases.&nbsp;
<LI>
All of this&nbsp;is driven by an EMF model that vendors may extend to suit
their needs.
</LI>
</UL>
<P><STRONG>Image&nbsp;1: &nbsp;</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&nbsp;for a domain model to existing relational schema
<UL>
<LI>
Project association to data source
<LI>
Project binding to selected&nbsp;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&nbsp;context sensitive to loaded meta data
<LI>
Customize tables and&nbsp;columns to classes and attributes.&nbsp;
<LI>
Generation of artifacts into Eclipse project for runtime execution</LI></UL>
</LI>
</UL>
</UL>
<P><STRONG>Image 2:&nbsp; </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,&nbsp;
EJBQL visual query builder, support for named queries, support for custom fetch
group configuration.&nbsp;
</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&nbsp;</LI></UL>
<UL>
<LI>
Property based meta data management of persistent classes&nbsp;</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&nbsp;<A href="/proposals/eclipse-dtp/main.html">Data
Tools Project</A> and&nbsp;<A href="/webtools/">Web Tools
Project</A>&nbsp; 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>&nbsp;</P>
</TD>
</TR>
</TBODY></TABLE>
</BODY>
</HTML>