Comic Example using RCP
This example illustrates the use of EclipseLink JPA in a simple RCP application. Running this example requires OSGi (Equinox) as well as the following bundles.
- EclipseLink OSGi bundles (available from the EclipseLink Downloads page and P2 (see Installing EclipseLink OSGi in PDE). To have both EclipseLink and RCP bundles available in your target platform you can also add EclipseLink to the default target platform.
- org.eclipse.persistence.core - Core EclipseLink Bundle
- org.eclipse.persistence.asm - EclipseLink bundling of ASM to enable byte-code weaving
- org.eclipse.persistence.antlr - EclipseLink bundling of ANTLR used for JPQL parsing
- javax.persistence - Java Persistence API 2.0 specification
- org.eclipse.persistence.jpa - EclipseLink JPA Bundle
- org.eclipse.persistence.jpa.osgi - EclipseLink JPA OSGi Bundle (required only with EclipseLink 2.1 and above)
- Derby JDBC Driver (available from EclipseLink examples SVN)
- org.eclipse.persistence.derby - Provides access to the Derby client driver, but does not contain it. See the ReadMe.txt for configuration instructions.
- Example Bundles (available from EclipseLink examples SVN)
Understanding the Example
The example is composed of 3 bundles
This bundle contains the domain classes with their JPA mappings specified through annotations.
- Issue.java (org.eclipse.persistence.example.jpa.comics.model.annotated)
- Publisher.java (org.eclipse.persistence.example.jpa.comics.model.annotated)
- Title.java (org.eclipse.persistence.example.jpa.comics.model.annotated)
Note that the manifest imports the javax.persistence package with version "1.1.0" and attribute jpa="2.0" so as to be compliant with the OSGi Enterprise specification. See Importing Java.Persistence 2.0 for more information on these values.
Manifest-Version: 1.0. Bundle-ManifestVersion: 2 Bundle-Name: Model Plug-in Bundle-SymbolicName: org.eclipse.persistence.example.jpa.comics.model.annotated Bundle-Version: 1.1.0 Export-Package: org.eclipse.persistence.example.jpa.comics.model.annotated Bundle-RequiredExecutionEnvironment: J2SE-1.5 Import-Package: javax.persistence;version="1.1.0";jpa="2.0"
This bundle is a utility that can create the database and populate it from a provided data set. Usage instructions are included in those for the RCP application (see below).
This bundle contains a simple RCP application using EclipseLink. RCP applications are started a little differently than regular OSGi applications so we don't rely on bundle start levels. In a typical EclipseLink OSGi application the javax.persistence and o.e.p.jpa bundles are started before client code is run so they can publish OSGi services the client will use. However in RCP this isn't the case and so we don't go through the JPA bootstrap API. Instead we directly instantiate an EclipseLink OSGi PersistenceProvider (see Model.getEntityManagerFactory()). The classloader that is provided to the persistence provider must be able to load the java.persistence.* classes, org.eclipse.persistence.jpa.* classes, and the persistence unit classes and artifacts. The classloader of the RCP client bundle works great for this example.
Running the RCP Example
Instructions for how to run the example are provided in the ReadMe.txt file at the root of the org.eclipse.persistence.example.jpa.rcp.comics bundle.
Running with Eclipse IDE
The example can easily be run within the Eclipse IDE ...