Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF/Teneo 1.0.4/EclipseLink Support"

< EMF
(Accessing EMF Models in Databases using the EclipseLink Resource)
(Accessing EMF Models in Databases using the EclipseLink Resource)
Line 8: Line 8:
 
* Schema-driven
 
* Schema-driven
  
== Accessing EMF Models in Databases using the EclipseLink Resource ==
+
== Accessing EMF Models in Databases using the EclipseLink Resource and URIs ==
  
 
Teneo/EclipseLink provides a full implementation of EMF's Resource interface named ''EclipseLinkResourceImpl''. It enables applications to load and save EMF models from or to relational databases and to manage their lifecycle directly through EMF's built-in persistence API, i.e. the ''ResourceSet'' interface. ''EclipseLinkResourceImpl'' represents an almost complete abstraction from JPA mappings and EclipseLink APIs and makes accessing models in databases, from an EMF point of view, as natural as loading or saving models from files.
 
Teneo/EclipseLink provides a full implementation of EMF's Resource interface named ''EclipseLinkResourceImpl''. It enables applications to load and save EMF models from or to relational databases and to manage their lifecycle directly through EMF's built-in persistence API, i.e. the ''ResourceSet'' interface. ''EclipseLinkResourceImpl'' represents an almost complete abstraction from JPA mappings and EclipseLink APIs and makes accessing models in databases, from an EMF point of view, as natural as loading or saving models from files.
  
 
Along with ''EclipseLinkResourceImpl'' a dedicated ''eclipselink'' URI protocol and a underlying resource factory named ''EclipseLinkResourceFactoryImpl'' have been defined. EclipseLink URIs enable models in databases to be referenced and the EclipseLink resource factory makes sure that instances of ''EclipseLinkResourceImpl'' are used to load and save such models.
 
Along with ''EclipseLinkResourceImpl'' a dedicated ''eclipselink'' URI protocol and a underlying resource factory named ''EclipseLinkResourceFactoryImpl'' have been defined. EclipseLink URIs enable models in databases to be referenced and the EclipseLink resource factory makes sure that instances of ''EclipseLinkResourceImpl'' are used to load and save such models.
 +
 +
However, referencing models in databases is not as obvious as for models persisted in files.
 +
Database access parameters
 +
Contents query
 +
 +
The EclipseLink URI protocol includes all parameters which are
 +
 +
===
 +
 +
  // create sample instance of library model
 +
  Library library1 = LibraryFactory.eINSTANCE.createLibrary();
 +
  library.setName("library1");
  
 
   // create EclipseLink URI for saving/loading library model in/from database
 
   // create EclipseLink URI for saving/loading library model in/from database
 
   String query = EclipseLinkResourceUtil.createContentsEqualQuery(LibraryPackage.eINSTANCE.getLibrary(),LibraryPackage.eINSTANCE.getLibrary_Name(), library1.getName());
 
   String query = EclipseLinkResourceUtil.createContentsEqualQuery(LibraryPackage.eINSTANCE.getLibrary(),LibraryPackage.eINSTANCE.getLibrary_Name(), library1.getName());
   uri = EclipseLinkResourceUtil.createEclipseLinkURI(TEST_PERSISTENCE_UNIT_NAME, query);
+
   uri = EclipseLinkResourceUtil.createEclipseLinkURI("library", query);
  
 
   // save library model instance in database
 
   // save library model instance in database
Line 30: Line 42:
 
   assertTrue(resource1.isLoaded());
 
   assertTrue(resource1.isLoaded());
  
   resource1.save(Collections.EMPTY_MAP);
+
   resource1.save(null);
  
 
== Building Model-based Rich Client Applications on top of Teneo and EclipseLink ==
 
== Building Model-based Rich Client Applications on top of Teneo and EclipseLink ==

Revision as of 17:47, 16 March 2009

Teneo 1.0.4 provides support for EclipseLink. The following sections explain the principal features it includes and give advice how they can be used for building model-based applications on top of relational databases.

Creating EclipseLink/JPA Mappings for EMF models

Three possibilities:

  • Model-driven
  • Meet-in-the-middle
  • Schema-driven

Accessing EMF Models in Databases using the EclipseLink Resource and URIs

Teneo/EclipseLink provides a full implementation of EMF's Resource interface named EclipseLinkResourceImpl. It enables applications to load and save EMF models from or to relational databases and to manage their lifecycle directly through EMF's built-in persistence API, i.e. the ResourceSet interface. EclipseLinkResourceImpl represents an almost complete abstraction from JPA mappings and EclipseLink APIs and makes accessing models in databases, from an EMF point of view, as natural as loading or saving models from files.

Along with EclipseLinkResourceImpl a dedicated eclipselink URI protocol and a underlying resource factory named EclipseLinkResourceFactoryImpl have been defined. EclipseLink URIs enable models in databases to be referenced and the EclipseLink resource factory makes sure that instances of EclipseLinkResourceImpl are used to load and save such models.

However, referencing models in databases is not as obvious as for models persisted in files. Database access parameters Contents query

The EclipseLink URI protocol includes all parameters which are

=

 // create sample instance of library model
 Library library1 = LibraryFactory.eINSTANCE.createLibrary();
 library.setName("library1");
 // create EclipseLink URI for saving/loading library model in/from database
 String query = EclipseLinkResourceUtil.createContentsEqualQuery(LibraryPackage.eINSTANCE.getLibrary(),LibraryPackage.eINSTANCE.getLibrary_Name(), library1.getName());
 uri = EclipseLinkResourceUtil.createEclipseLinkURI("library", query);
 // save library model instance in database
 ResourceSet resourceSet1 = new ResourceSetImpl();
 resourceSet1.getLoadOptions().putAll(getTestPersistenceUnitProperties());
 resource1 = resourceSet1.createResource(uri);
 assertTrue(resource1 instanceof EclipseLinkResourceImpl);
 assertFalse(resource1.isLoaded());
 resource1.getContents().add(library1);
 assertTrue(resource1.isLoaded());
 resource1.save(null);

Building Model-based Rich Client Applications on top of Teneo and EclipseLink

--Stephaneberle9.gmail.com 05:16, 16 March 2009 (UTC)

Back to the top