EclipseLink/Examples/OSGi/LazyLoadingRCP

From Eclipsepedia

Jump to: navigation, search

Under Construction

Contents

Comic Example using RCP

Software Required

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).
    • 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)
    • org.eclipse.persistence.example.jpa.comics.model.annotated
    • org.eclipse.persistence.example.jpa.comics.setup
    • org.eclipse.persistence.example.jpa.rcp.comics

Understanding the Example

The example is composed of 3 bundles

org.eclipse.persistence.example.jpa.comics.model.annotated Bundle

This bundle contains the domain classes with their JPA mappings specified through annotations.


META-INF/MANIFEST.MF

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"

org.eclipse.persistence.example.jpa.comics.setup Bundle

This bundle is a utility that can create the database and populate it from a provided data set.

org.eclipse.persistence.example.jpa.rcp.comics Bundle

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 ...