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.
Difference between revisions of "Configuring a Relational Direct Collection Mapping (ELUG)"
m (→Configuring Direct Value Field) |
m (→Introduction to Relational Direct Collection Mapping Configuration) |
||
Line 111: | Line 111: | ||
+ | This example shows how to create a direct collection mapping and add it to a descriptor using Java code. | ||
+ | |||
+ | <span id="Example 36-1"></span> | ||
+ | ''''' Direct Collection Mapping''''' | ||
+ | |||
+ | <pre> | ||
+ | public void customize(ClassDescriptor descriptor) { | ||
+ | DirectCollectionMapping mapping = new DirectCollectionMapping(); | ||
+ | |||
+ | // configure mapping | ||
+ | ... | ||
+ | |||
+ | // add mapping to descriptor | ||
+ | descriptor.addMapping(mapping); | ||
+ | } | ||
+ | </pre> | ||
For more information, see the following: | For more information, see the following: | ||
Line 116: | Line 132: | ||
* [[Introduction%20to%20Relational%20Mappings%20(ELUG)#Direct Collection Mapping|Direct Collection Mapping]] | * [[Introduction%20to%20Relational%20Mappings%20(ELUG)#Direct Collection Mapping|Direct Collection Mapping]] | ||
* [[Configuring%20a%20Relational%20Mapping%20(ELUG)|Configuring a Relational Mapping]] | * [[Configuring%20a%20Relational%20Mapping%20(ELUG)|Configuring a Relational Mapping]] | ||
− | + | * [[Creating%20and%20Configuring%20Mappings%20(ELUG)|Creating and Configuring Mappings]] | |
− | + | ||
+ | For information on using JPA to configure direct collection mappings, see [[Using%20EclipseLink%20JPA%20Extensions%20(ELUG)#How to Use the @BasicCollection Annotation|How to Use the @BasicCollection Annotation]]. | ||
==Configuring Target Table== | ==Configuring Target Table== |
Revision as of 12:05, 30 November 2007
Contents
This section describes the various components that you must configure in order to use a relational direct collection mapping.
For information on how to configure EclipseLink mappings options common to two or more mapping types, see Configuring a Mapping.
For information on how to create EclipseLink mappings, see Creating a Mapping.
Configurable Options for Relational Direct Collection Mapping lists the configurable options for a relational direct collection mapping.
Introduction to Relational Direct Collection Mapping Configuration
This table lists the configurable options for a relational direct collection mapping.
Configurable Options for Relational Direct Collection Mapping
Option | Workbench | Java |
---|---|---|
Target table (see #Configuring Target Table) |
||
Direct value field (see #Configuring Direct Value Field) |
||
Method or direct field access (see Configuring a Type Conversion Converter) |
||
Read-only mapping (see Configuring Read-Only Mappings) |
||
Batch reading (see Configuring Batch Reading) |
||
Indirection (lazy loading) (see Configuring Mapping Comments) |
||
Container policy (see Configuring Mapping Comments) |
||
Mapping comments (see Configuring Mapping Comments) |
||
Serialized object converter (see Configuring a Serialized Object Converter) |
||
Type conversion converter (see Configuring a Type Conversion Converter) |
||
Object type converter (see Configuring an Object Type Converter) |
||
Table and field references (see Configuring Joining at the Mapping Level) |
This example shows how to create a direct collection mapping and add it to a descriptor using Java code.
Direct Collection Mapping
public void customize(ClassDescriptor descriptor) { DirectCollectionMapping mapping = new DirectCollectionMapping(); // configure mapping ... // add mapping to descriptor descriptor.addMapping(mapping); }
For more information, see the following:
For information on using JPA to configure direct collection mappings, see How to Use the @BasicCollection Annotation.
Configuring Target Table
Each direct collection stores reference information in a target table. In Figure 32-6, the RESPONS table contains the primary key and object of the instance owning the collection. You must create this table in your database.
How to Configure a Target Table Using Workbench
To specify the direct collection specifics, use this procedure:
- Select the mapped attribute in the Navigator. Its properties appear in the Editor.
- Click the General tab. The General tab appears.
General Tab, Target Table Options
Use the Target Table list to select the table that contains the reference fields for the direct collection mapping.
How to Configure a Target Table Using Java
Direct collection mappings store collections of Java objects that are not EclipseLink-enabled. Direct collections usually store Java types, such as String.
Direct collection mappings are instances of the DirectCollectionMapping class and require the following elements:
- The attribute mapped, set by using the setAttributeName method.
- The database table that holds the values to be stored in the collection, set by using the setReferenceTableName method.
- The field in the reference table from which the values are read and placed into the collection; this is called the direct field. Set it using the setDirectFieldName method.
- The foreign key information, which you specify using the setReferenceKeyFieldName method and passing the name of the field that is a foreign reference to the primary key of the source object
Note: If the target primary key is composite, call the addReferenceKeyFieldName method for each of the fields that make up the key. |
Configuring a Simple Direct Collection Mapping
public void customize(ClassDescriptor descriptor) { DirectCollectionMapping directCollectionMapping = new DirectCollectionMapping(); directCollectionMapping.setAttributeName ("responsibilitiesList"); directCollectionMapping.setReferenceTableName ("RESPONS"); // target table directCollectionMapping.setDirectFieldName ("DESCRIP"); directCollectionMapping.setReferenceKeyFieldName ("EMP_ID"); directCollectionMapping.useCollectionClass (Collection.class); // default // add this mapping to descriptor descriptor.addMapping (directCollectionMapping); }
In addition to the API that Configuring a Simple Direct Collection Mapping illustrates, other common API for use with direct collection mappings include the following:
- useBasicIndirection: implements EclipseLink value holder indirection.
- useTransparentCollection: if you use transparent indirection, this element places a special collection in the source object's attribute.
- dontUseIndirection: implements no indirection.
For more information about the available methods for DirectCollectionMapping, see the EclipseLink API Reference.
Configuring Direct Value Field
The direct value field, located in the reference table, stores the primitive data value. In Figure 32-6, the DESCRIP field stores the collection.
How to Configure a Direct Value Field Using Workbench
To specify the direct collection specifics, use this procedure:
- Select the mapped attribute in the Navigator. Its properties appear in the Editor.
- Click the General tab. The General tab appears.
General Tab, Direct Value Field
Use the Direct Value Field list to select the field from the Target Table table that contains the object of the collection.
How to Configure Direct Value Field Using Java
Configuring a Simple Direct Collection Mapping demonstrates how to create and configure a direct collection mapping, including the setting of a direct field. The example also shows how to add this mapping to the descriptor.