Jump to: navigation, search

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

m
m
Line 4: Line 4:
 
=Static and Dynamic Entities=
 
=Static and Dynamic Entities=
  
 +
* [[#static|Static Entities]
 +
* [[#dynamic|Dynamic Entities]
  
==Static MOXy==
 
  
==Dynamic MOXy==
+
<span id="static"></span>
With EclipseLink Dynamic MOXy, you can bootstrap a '''JAXBContext''' from a variety of metadata sources and use exitging JAXB APIs to marshal and unmarshal data… ''without having compiled Java class files on the classpath''. This allows you to alter the metadata source as needed, without having to update and recompile the previously-generated Java source code.
+
==Using Static MOXy==
 +
 
 +
 
 +
<span id="dynamic"></span>
 +
==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 source as needed, without having to update and recompile the previously-generated Java source code.
  
 
You should consider using [#Dynamic Entities|Dynamic MOXy] when:
 
You should consider using [#Dynamic Entities|Dynamic MOXy] when:
Line 34: Line 40:
 
</source>
 
</source>
  
 +
 +
===Creating Dynamic Entities===
 +
To create and use Dynamic MOXy entities, create a '''JAXBContext''' by using the '''DynamicJAXBContextFactory''' class. You can create a '''DynamicJAXBContext''' can be created from an XML Schema file (XSD), EclipseLink OXM metadata file, or from an EclipseLink Project specified in the EclipseLink sessions.xml file. <br>'''Note:''' DynamicJAXBContexts cannot be instantiated directly, they must be created through the factory API.
 +
*[[UserGuide/MOXy/Runtime/Bootstrapping/From_Schema|Bootstrapping from XML schema (XSD)]]
 +
* Bootstrapping from EclipseLink OXM metadata
 +
** [[UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_OXM_using_DynamicEntities|Single project]]
 +
** [[UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_OXM_using_DynamicEntities|Multiple projects]]
 +
* Bootstrapping from EclipseLink project (sessions.xml)
 +
**[[UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_sessions.xml_using_DynamicEntities|Single project]]
 +
**[[UserGuide/MOXy/Runtime/Bootstrapping/Single_Project/From_sessions.xml_using_DynamicEntities|Multiple projects]]
  
 
{{Template:EclipseLink_Spec
 
{{Template:EclipseLink_Spec
Line 45: Line 61:
 
|previous=[[EclipseLink/UserGuide/MOXy/Overview/Annotations|Annotations]]
 
|previous=[[EclipseLink/UserGuide/MOXy/Overview/Annotations|Annotations]]
 
|up=[[EclipseLink/UserGuide/MOXy/Overview|Overview]]
 
|up=[[EclipseLink/UserGuide/MOXy/Overview|Overview]]
|version=2.2.0}}
+
|version=2.2.0 Draft}}
 
+
 
+
 
+
 
+
Can use Dynamic MOXy when:
+
 
+
*You want to start from an XML Schema (XSD) and have EclipseLink generate classes for you
+
*You do not want to deal with concrete Java domain classes
+
 
+
'''Introduction to Dynamic MOXy:'''
+
*http://wiki.eclipse.org/EclipseLink/Development/2.1/DynamicMOXy/296967/Documentation#Dynamic_MOXy_-_JAXB_with_Dynamically_Generated_Java_Classes
+

Revision as of 10:30, 10 December 2010


link="http://wiki.eclipse.org/EclipseLink"
EclipseLink
Website
Download
Community
Mailing ListForumsIRC
Bugzilla
Open
Help Wanted
Bug Day
Contribute
Browse Source

Static and Dynamic Entities

  • [[#static|Static Entities]
  • [[#dynamic|Dynamic Entities]


Using Static MOXy

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 source as needed, without having to update and recompile the previously-generated Java source code.

You should consider using [#Dynamic Entities|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 Customer.class or Address.class), dynamic MOXy uses a simple get(propertyName)/set(propertyName, propertyValue) API to manipulate data. EclipseLInk generates (in memory) a DynamicType associated with each DynamicEntity

Idea.png
DynamicTypes are similar to Java classes; whereas DynamicEntities can be thought of as instances of a DynamicType.


Example

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);


Creating Dynamic Entities

To create and use Dynamic MOXy entities, create a JAXBContext by using the DynamicJAXBContextFactory class. You can create a DynamicJAXBContext can be created from an XML Schema file (XSD), EclipseLink OXM metadata file, or from an EclipseLink Project specified in the EclipseLink sessions.xml file.
Note: DynamicJAXBContexts cannot be instantiated directly, they must be created through the factory API.

Elug javaspec icon.gif

For more information, see Appendix D: Binding XML Names to Java Identifiers in the JPA Specification.


Eclipselink-logo.gif
Version: 2.2.0 Draft
Other versions...