| <?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' | |
| $pageTitle = ""; | |
| $pageKeywords = ""; | |
| $pageAuthor = ""; | |
| ob_start(); | |
| ?> | |
| <div id="maincontent"> | |
| <div id="midcolumn"> | |
| <h1> EJB 3.0 Object-Relational | |
| Mapping Project</h1> | |
| <?php | |
| include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php"); | |
| generate_header("EJB3.0-ORM (Dali)"); | |
| ?> | |
| <h2>Introduction</h2> | |
| <p>The EJB 3.0 Object-Relational Mapping Project is a proposed open source project | |
| under the <a href="/technology/">Eclipse Technology Project</a>.</p> | |
| <p>This project proposal is in the <a href="/projects/dev_process/">Proposal | |
| Phase</a> and is posted here to solicit community feedback, additional project | |
| participation, and ways the project can be leveraged from the Eclipse membership-at-large. | |
| You are invited to comment on and/or join the project. Please send all feedback | |
| to the <a | |
| href="/newsportal/thread.php?group=eclipse.technology.ejb-orm">eclipse.technology.ejb-orm</a> | |
| newsgroup. </p> | |
| <h2>Project Goal</h2> | |
| <p>The goal of this project is to add comprehensive support to the Eclipse Project | |
| for the definition, editing, and deployment of Object-Relational (O/R) mappings | |
| for EJB 3.0 Entity Beans. EJB 3.0 O/R mapping support will focus on minimizing | |
| the complexity of mapping by providing creation and automated initial mapping | |
| wizards, and programming assistance such as dynamic problem identification. | |
| The implementation will be extensible so third party vendors can add to its | |
| functionality.</p> | |
| <h2>Project Scope</h2> | |
| <p>This project will provide tooling to map EJB 3.0 Entity Beans to relational | |
| databases tables, as detailed in <a href="http://www.jcp.org/en/jsr/detail?id=220">JSR | |
| 220: Enterprise JavaBeans™ 3.0 Persistence API</a>. From a J2EE perspective, this tooling | |
| would be an integrated component beside its peers in the JST project under the | |
| larger umbrella of the WTP. It will leverage the work being done under the | |
| J2EE Core Model and Tools in the areas of J2EE Artifacts and Components and | |
| J2EE Server Tooling. As EJB 3.0 persistence is also intended to be the persistence | |
| standard for J2SE, it will be necessary for this tooling to support non-J2EE | |
| usage.</p> | |
| <p>Session and Message Driven Bean configuration is not a part of this project, | |
| as it is expected that the current JST support will be evolved to cover the | |
| changes required by EJB 3.0. O/R mapping is not applicable to these bean types | |
| and so they are therefore out of scope.</p> | |
| <p> Support for persistence technologies other than JSR 220 (e.g., JSR 222: Java™ | |
| Architecture for XML Binding (JAXB) 2.0) is out of scope.</p> | |
| <p >The goal of the project is the development of tooling and frameworks to support | |
| the construction of EJB 3.0 Entity Beans, not the development of an O/R mapping | |
| framework. The proposed tools and frameworks are all design time only. No | |
| runtime libraries or frameworks are included in this proposal. Runtime support | |
| for EJB 3.0 will be provided by JSR 220 compliant application server implementations.</p> | |
| <p >Extension points will be provided to support vendor extensions to EJB 3.0; | |
| however, while this proposal acknowledges and supports the need for vendor | |
| extensions, the scope of this proposal is limited to the functionality defined | |
| in the EJB 3.0 specification.</p> | |
| <p>At the time of this writing, the EJB 3.0 specification has not been finalized | |
| and changes are expected before the final draft is issued. Accordingly, the | |
| scope of this proposal will track the draft specification and the tooling will | |
| be validated against the EJB 3.0 reference implementation and available commerial | |
| implementations.</p> | |
| <h2>Project Principles</h2> | |
| <p><b>Leverage the Eclipse Ecosystem</b>: It is our goal to extend | |
| the Eclipse user experience as well as leverage other Eclipse project functionality | |
| where applicable.</p> | |
| <p><b>Vendor Neutrality</b>: We intend to build an EJB 3.0 tool that is not | |
| biased toward any particular EJB container or persistence vendor.</p> | |
| <p><b>Extensibility</b>: It is our intention to provide a generic and extensible | |
| set of editors and frameworks that provide a vendor neutral ability to add proprietary | |
| O/R mapping features that extend the EJB 3.0 specification (e.g., advanced mappings | |
| and querying provided by implementations such as BEA Weblogic, IBM WebSphere, | |
| JBoss Hibernate, and Oracle TopLink).</p> | |
| <p>Extensibility of the EJB 3.0 tooling will not be limited to add-ons extensions. | |
| By being architected as a set of plug-in components, individual components (e.g., | |
| Entity generation from tables) may be replaced by vendor specific implementations.</p> | |
| <p><b>Incremental Development</b>: As this project will be subject | |
| to an evolving specification, an agile development process will be employed | |
| to manage and respond to changing requirements.</p> | |
| <p><strong>Standards Compliance: </strong>The project tooling will be focused | |
| on providing support for persistence Entities as defined by the JSR 220 Enterprise | |
| JavaBeans™ 3.0 specification.</p> | |
| <p><strong>Inclusiveness:</strong> Project participation by all interested parties | |
| is welcome. The initial committers, for example, are from three vendors that | |
| compete agressively in the market but recognize the value of working together | |
| on pre-competitive Eclipse-based tools and technologies.</p> | |
| <h2>Project Description</h2> | |
| <p>It is now generally accepted that tooling applied in the right scenarios can | |
| increase developer productivity, saving time and money for their organizations. | |
| O/R mapping is one of these scenarios that has benefited from tool support in | |
| the past from providing design time validation of mappings and configuration | |
| to visually managing the mapping of large object models. Examples of this type | |
| of tool include the <a | |
| href="http://www.oracle.com/technology/products/ias/toplink/mwdemos/index.html">Oracle | |
| TopLink Workbench</a>, <a href="http://www.solarmetric.com/jdo/Kodo_JDO/kododevelopersworkbench.php">Solarmetric's | |
| Kodo Development Workbench</a>, and the <a href="http://www.hibernate.org/Projects/HibernateTools">JBoss | |
| Hibernate Mapping Editor</a>. IDEs will support annotations, but an O/R mapping | |
| tool should go beyond this to offer further context and intelligence to aid | |
| decision-making and reduce developer errors.</p> | |
| <p>The specific intent of this project is to fill the current void in lightweight | |
| tooling support for EJB 3.0 persistence. The project will address this void | |
| with a non-proprietary tooling solution that can be used to map to any EJB 3.0 | |
| compliant runtime implementation. In addition, container and persistence vendors | |
| and open source projects could extend this project with proprietary plug-ins | |
| for their own advanced mapping or configuration support. While the spec is | |
| in flux, the project would target the reference implementation for EJB 3.0 O/R | |
| Mapping. See the diagram below for a visual representation.</p> | |
| <p align=center> <img border=0 width=568 height=357 | |
| src="images/EJB30ToolingDiagram.jpg" | |
| v:shapes="_x0000_i1025"> </p> | |
| <p>As stated above, this project is 100% tooling, and should be completely decoupled | |
| from any particular runtime implementation. </p> | |
| <p>Below are areas of targeted support for the project:</p> | |
| <B>EJB Specific Functionality</B> | |
| <p>This section illustrates the type of mapping support intended, but is not meant | |
| to be a comprehensive list of supported functionality.</p> | |
| <ul> | |
| <li>Basic mapping (field/column) and relationship (foreign key) mapping support</li> | |
| <li>Embeddable Classes</li> | |
| <li> Entity Bean Inheritance</li> | |
| <li>Entity Manager (Query API Support) | |
| <ul> | |
| <li>Named Queries</li> | |
| <li>EJBQL Queries</li> | |
| <li>Native Queries</li> | |
| </ul> | |
| </li> | |
| <li>Entity Bean Lifecycle management | |
| <ul> | |
| <li>Callback and EntityListener configuration</li> | |
| </ul> | |
| </li> | |
| <li>Version Locking</li> | |
| <li>ID Generators</li> | |
| <li>Multi-table mapping </li> | |
| <li>LOB mappings</li> | |
| <li>Reading and writing of EJB 3.0 O/R Annotations</li> | |
| <li> Reading and writing of EJB 3.0 O/R XML Descriptors</li> | |
| <li>Creation and editing of persistence archives (.par).</li> | |
| <li>Creation and editing of persistence.xml files.</li> | |
| </ul> | |
| <B>Automation/Generation Functionality</B> | |
| <p>Wizards will be provided to assist in prototyping and jump starting of projects. | |
| Features like automated initial mapping of classes to tables based on syntactic | |
| name similarity remove much of the basic work associated with O/R mapping.</p> | |
| <ul> | |
| <li>Automated initial mapping process for basic mappings, relationship mappings, | |
| and inheritance</li> | |
| <li>Generation of Entity Beans from table definitions</li> | |
| <li>Generation of table definitions from Entity Beans</li> | |
| </ul> | |
| <B>Additional Functionality</B> | |
| <p>Developer productivity will be enhanced with the following features.</p> | |
| <ul> | |
| <li>Coding assistance for annotation parameters (e.g., valid table/column names)</li> | |
| <li>Mapping assistance and validation through dynamic problem reporting</li> | |
| <li>Ability to define and manage persistence needs of large projects</li> | |
| <li>Visual EJBQL Builder</li> | |
| <li>Ability to keep EJBQL queries in sync with Java class definitions in the | |
| face of refactoring</li> | |
| </ul> | |
| <b>Extension Points</b> | |
| <p>The project should be architected as a set of plug-ins, each of which provides | |
| the ability for other groups or vendors to further extend and customize the | |
| functionality in a well-defined manner. In particular, it is | |
| expected that the core mapping functionality would be extended by:</p> | |
| <ul> | |
| <li>EJB 3.0 container tools</li> | |
| <li>EJB 3.0 O/R persistence tools</li> | |
| </ul> | |
| <p>Extension points will be defined to allow tool vendors and open source projects | |
| to extend the core mapping facilities with additional functionality. For example, | |
| extension points would likely be defined for the following areas:</p> | |
| <ul> | |
| <li>Addition of mapping types</li> | |
| <li>Addition of descriptor types</li> | |
| <li>Extension of descriptor configuration with policies</li> | |
| <li>Addition of query types and configuration</li> | |
| <li>Preferences and other standard extensions</li> | |
| </ul> | |
| <B>Integration Points with Other Eclipse Projects</B> | |
| <p>Given the scope of the project, the EJB 3.0 O/R mapping tools will interact | |
| with and leverage the following existing Eclipse projects: </p> | |
| <ul> | |
| <li><a href="/jdt/index.html">JDT (Java Development Tools) | |
| Core, UI, and LTK (Language ToolKit)</a> | |
| <ul> | |
| <li>Java class metadata</li> | |
| <li>Refactoring support</li> | |
| <li>UI Integration</li> | |
| </ul> | |
| </li> | |
| <li><a href="/proposals/eclipse-dtp/">DTP (Data | |
| Tools Project)</a> and/or <a href="/webtools/wst/main.html">WST | |
| (Web Standard Tools)</a> rdb component | |
| <ul> | |
| <li>Table Definitions</li> | |
| <li>Login specifications</li> | |
| <li>Query execution support</li> | |
| </ul> | |
| </li> | |
| <li><a href="/webtools/jst/main.html">JST (j2ee Standard | |
| Tools)</a> | |
| <ul> | |
| <li>J2EE Core Model</li> | |
| <li>J2EE Server Models</li> | |
| <li>EJB packaging</li> | |
| <li>Application Deployment</li> | |
| <li>Annotation support</li> | |
| </ul> | |
| </li> | |
| </ul> | |
| <B>High Level Use Cases</B> | |
| <ul> | |
| <li>Map EJB 3.0 Entities, test in J2EE environment</li> | |
| <ul> | |
| <li>Connect to Database</li> | |
| <li>Import Table Definitions</li> | |
| <li>Perform automated initial mapping on existing EJB 3.0 Entities</li> | |
| <li>Customize mappings as necessary</li> | |
| <li>Package EAR and PAR contents</li> | |
| <li>Run, Test, Debug EJB 3.0 Entity Beans on J2EE server</li> | |
| </ul> | |
| <li>Generate EJB 3.0 Entities from Tables, test in J2SE environment</li> | |
| <ul> | |
| <li>Connect to Database</li> | |
| <li>Import Table Definitions</li> | |
| <li>Generate EJB 3.0 Entities (with mappings) from Table Definitions</li> | |
| <li>Customize mappings as necessary</li> | |
| <li>Run, Test, Debug EJB 3.0 Entity Beans on J2SE JVM</li> | |
| </ul> | |
| <li>Generate Tables from EJB 3.0 Entities, test in J2EE environment</li> | |
| <ul> | |
| <li>Generate Tables from existing EJB 3.0 Entities</li> | |
| <li>Perform automated initial mapping on existing EJB 3.0 Entities | |
| <li>Customize mappings as necessary</li> | |
| <li>Package EAR and PAR contents</li> | |
| <li>Run, Test, Debug EJB 3.0 Entity Beans on J2SE JVM</li> | |
| </ul> | |
| </ul> | |
| <h2>Organization</h2> | |
| <p>We propose this project should be undertaken as an incubator within the Eclipse | |
| Technology Project. EJB 3.0 O/R mapping will be the Java standard persistence | |
| API for both J2EE and J2SE. As such, this project will complement WTP and DTP, | |
| which are found in the Eclipse Tools Project, and JDT which is a part of the | |
| core Eclipse project.</p> | |
| <p>Initially, EJB 3.0 Expert Group members and other individuals and organizations | |
| that have serious interest will be solicited to participate. This list would | |
| cover a broad base of organizations interested in EJB 3.0, including J2EE vendors | |
| and third party persistence providers.</p> | |
| <p> The submitters of this proposal welcome interested parties to post to the | |
| <a | |
| href="/newsportal/thread.php?group=eclipse.technology.ejb-orm">eclipse.technology.ejb-orm | |
| </a> newsgroup and ask to be added to the list as interested parties or to suggest | |
| changes to this document. </p> | |
| <p><B>Initial Committers</B> </p> | |
| <p>The three initial contributors to this project proposal are all members of | |
| the JSR 220 EJB 3.0 expert group and bring with them significant practical experience | |
| in the area of O/R mapping technology and tooling.</p> | |
| <ul> | |
| <li> Oracle—Oracle has committed to providing project leadership, development | |
| resources experienced in the construction of commercial quality O/R mapping | |
| tools, and an initial codebase to draw from.</li> | |
| <li>SolarMetric—SolarMetric is contributing O/R mapping expertise and | |
| development resources experienced in commercial O/R tool development.</li> | |
| <li>JBoss—JBoss is supporting the project through the committment of experienced | |
| O/R tool development resources and Eclipse development expertise.</li> | |
| </ul> | |
| <p>The project leadership will continue to pro-actively contact interested parties | |
| to invite their contribution of code and development resources.</p> | |
| </div> | |
| </div> | |
| <?php | |
| # Paste your HTML content between the EOHTML markers! | |
| $html = ob_get_contents(); | |
| ob_end_clean(); | |
| # Generate the web page | |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); | |
| ?> | |