Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/MOXy/Overview/DynamicEntities"

m (Replacing page with 'See http://www.eclipse.org/eclipselink/documentation/2.4/moxy/dynamic_jaxb001.htm')
 
(27 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{EclipseLink_UserGuide
+
See http://www.eclipse.org/eclipselink/documentation/2.4/moxy/dynamic_jaxb001.htm
|info=y
+
|toc=y
+
|eclipselink=y
+
|eclipselinktype=MOXy
+
}}
+
=Static and Dynamic Entities=
+
 
+
==Using Static MOXy==
+
 
+
The most common way to use EclipseLink JAXB is with existing Java classes, mapped to XML using Java annotations and/or EclipseLink OXM metadata.  Using this approach, you will be dealing with your actual domain objects when converting to and from XML.  The following example shows a simple Java class that can be used with JAXB:
+
 
+
<source lang="java">
+
import javax.xml.bind.annotation.XmlAttribute;
+
import javax.xml.bind.annotation.XmlRootElement;
+
 
+
@XmlRootElement
+
public class Customer {
+
  @XmlAttribute
+
  private long id;
+
 
+
  private String name;
+
 
+
  // ...
+
  // get() and set() methods
+
  // ...
+
}
+
</source>
+
 
+
==Using Dynamic MOXy==
+
With EclipseLink Dynamic MOXy, you can bootstrap a '''JAXBContext''' from a variety of metadata sources and use existing JAXB APIs to marshal and unmarshal data… ''without having compiled Java class files on the classpath''. This allows you to alter the metadata as needed, without having to update and recompile the previously-generated Java source code.
+
 
+
You should consider using Dynamic MOXy when:
+
*You want EclipseLink to generate classes from an XML schema (XSD).
+
*You do not want to deal with concrete Java domain classes.
+
 
+
===Dynamic Entities===
+
Instead of using actual Java classes (such as <tt>Customer.class</tt> or <tt>Address.class</tt>), Dynamic MOXy uses a simple <tt>get(propertyName)</tt>/<tt>set(propertyName, propertyValue)</tt> API to manipulate data. EclipseLink generates (in memory) a <tt>DynamicType</tt> associated with each <tt>DynamicEntity</tt>.
+
 
+
{{tip||<tt>DynamicTypes</tt> are similar to Java classes; whereas <tt>DynamicEntities</tt> can be thought of as instances of a <tt>DynamicType</tt>.}}
+
 
+
'''Example'''
+
<source lang="java">
+
DynamicEntity customer = (DynamicEntity) dynamicJAXBContext.createUnmarshaller().unmarshal(instanceDoc);
+
+
String lastName = customer.get("lastName");
+
List orders = customer.get("orders");
+
...
+
DynamicEntity address = dContext.newDynamicEntity("mynamespace.Address");
+
address.set("street", "1001 Fleet St.");
+
+
customer.set("lastName", lastName + "Jr.");
+
customer.set("address", address);
+
</source>
+
{{Template:EclipseLink_Spec
+
|section=Appendix D: Binding XML Names to Java Identifiers
+
}}
+
 
+
===Creating Dynamic Entities===
+
To create and use Dynamic MOXy entities, create a '''JAXBContext''' by using the '''DynamicJAXBContextFactory''' class. You can create a '''DynamicJAXBContext''' from an XML Schema file (XSD), EclipseLink OXM metadata file, or from an EclipseLink Project specified in the EclipseLink sessions.xml file.
+
 
+
*[[UserGuide/MOXy/Runtime/Bootstrapping/From_Schema|Bootstrapping from XML schema (XSD)]]
+
* Bootstrapping from EclipseLink OXM metadata
+
** [[EclipseLink/UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_OXM_using_DynamicEntities|Single project]]
+
** [[EclipseLink/UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_OXM_using_DynamicEntities|Multiple projects]]
+
* Bootstrapping from EclipseLink project (sessions.xml)
+
**[[EclipseLink/UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_sessions.xml_using_DynamicEntities|Single project]]
+
**[[EclipseLink/MOXy/Runtime/Bootstrapping/Single_Project/From_sessions.xml_using_DynamicEntities|Multiple projects]]
+
 
+
 
+
{{EclipseLink_MOXy
+
|next=[[EclipseLink/UserGuide/MOXy/Runtime|Runtime]]
+
|previous=[[EclipseLink/UserGuide/MOXy/Overview/Annotations|Annotations]]
+
|up=[[EclipseLink/UserGuide/MOXy/Overview|Overview]]
+
|version=2.2.0 Draft}}
+

Latest revision as of 09:35, 8 November 2012

See http://www.eclipse.org/eclipselink/documentation/2.4/moxy/dynamic_jaxb001.htm