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

Texo/EntityManagerObjectStore

< Texo
Revision as of 17:40, 24 August 2011 by Mtaal.springsite.com (Talk | contribs) (Creating an Object Store)

Introduction

The Texo ObjectStore concept integrates the model layer with JPA. It provides the following functionality:

  • It makes it possible to query using an EClass
  • Supports cross reference queries
  • Supports (de-)serialization with (de-)resolving of references in the XML/XMI against the ObjectStore (the database)

Jar files/Plugins

The Texo Object Store is defined in the org.eclipse.emf.texo.server plugin which is part of the Texo runtime feature (see Download & Install).

Creating an Object Store

An Object Store instance can be created directly if you have an EntityManager available:

EntityManagerObjectStore objectStore = new EntityManagerObjectStore();
objectStore.setEntityManager(entityManager);
// the URI is used for de-resolving references when serializing to XML, see below
objectStore.setUri("http://jpa.test");

Note that for the ObjectStore to be able to read the model layer: the model package class needs to be loaded and initialized, just touching it is enough, for example:

LibraryModelPackage.initialize();

Cross Reference Queries

The ObjectStore allows you to retrieve all the objects which reference a certain target object:

// get maximum 3 referers and include containment referers
List<Object> referers = objectStore.getReferingObjects(target, 3, true);

See the ObjectStore getReferingObjects api and the isReferenced method.

(De-)Serializing XML with correct id's

When (de-)serializing XML most of the time the references to other objects should be serialized as external references (the referenced object is not present in the XML). When de-serializing the XML these references should be correctly resolved to objects again. This resolving needs to be able to read the objects from the database again.

This (de-)resolving of references while reading from the database is done using the ObjectStore. It is quite simple:

// serialize a set of objects to xml, use XMI (specified by the second parameter
String xml = objectStore.toXML(objects, true);
// and get it back
List<Object> objects = objectStore.fromXML(xml, true);

Back to the top