Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/FAQ/SDO
Contents
What is SDO?
SDO is designed to be a unified view of data, much like the POJO is in Java EE. There are several programming languages (of which Java is one) that support the SDO specification.
SDO as a Dynamic Object Model
SDO metadata is represented as Type and Property objects. A Type is comparable to a Java class, and a property to a Java field. This metadata is defined at runtime either programmatically or from an XML schema.
Type customerType = TypeHelper.INSTANCE.getType(“urn:example”, “customer”); Property firstNameProperty = customerType.getProperty(“first-name”); Type addressType = TypeHelper.INSTANCE.getType(“urn:example”, “address”);
Data is represented as instances of Types called DataObjects, these correspond to objects in Java. DataObjects have many generic accessors that can be used to manipulate the data.
DataObject customerDO = DataFactory.INSTANCE.create(customerType); customerDO.setString(firstNameProperty, “Jane”); DataObject addressDO = DataFactory.INSTANCE.create(“urn:example”, address); addressDO.set(“street”, “123 Any Street”);
SDO as a Typed Object Model
SDO as dynamic object models is useful in certain frameworks (dynamic models allow metadata to be added without requiring a redeployment of the application), but in other situations a strongly typed model is required (typed models allow for code completion in an IDE). A code generation step can be performed to produce typed interfaces complete with bean style accessors.
Customer customerDO = (Customer) DataFactory.INSTANCE.create(customerType); CustomerDO.setFirstName(“Jane”);
SDO as an XML Representation
SDO has built in support for handling XML. The SDO metadata can be introspected to determine what the corresponding XML representation is.
XSDHelper.INSTANCE.isMixed(customerType); XSDHelper.INSTANCE.isElement(firstNameProperty);
The DataObjects themselves can then be converted to from/XML
XMLHelper.INSTANCE.save(customerDO, “urn:example”, “customer”, System.out);
SDO as a Disconnected Object
SDO was designed to represent disconnected data in a SCA (Service Component Architecture) environment. The main mechanism for accomplishing this goal is the ChangeSummary which tracks changes made to data objects over time (for DataObjects that have a ChangeSummary property).
List changed = customerDO.getChangeSummary().getChangedDataObjects();
Summary
EclipseLink is focussed on separating data from its messaging or persisted representations. Now with SDO support this data can be a POJO or a DataObject. This allows you to work with data in both Java EE and SCA environments.
How do I use SDO?
The following examples demonstrate how to use EclipseLink SDO:
How do I use SDO to Interact with a Relational Database?
EclipseLink provides an integration point between SDO and JPA. For more informations see: