|
EclipseLink 2.4.2, build 'v20130514-5956486' API Reference | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.persistence.dynamic.DynamicTypeBuilder
public class DynamicTypeBuilder
The EntityTypeBuilder is a factory class for creating and extending dynamic entity types. After being constructed in either usage the application can then use the provided API to customize mapping information of the type.
Field Summary | |
---|---|
protected org.eclipse.persistence.internal.dynamic.DynamicTypeImpl |
entityType
The type being configured for dynamic use or being created/extended |
Constructor Summary | |
---|---|
DynamicTypeBuilder(java.lang.Class<?> dynamicClass,
DynamicType parentType,
java.lang.String... tableNames)
Create an EntityType for a new dynamic type. |
|
DynamicTypeBuilder(DynamicClassLoader dcl,
ClassDescriptor descriptor,
DynamicType parentType)
Create an EntityTypeBuilder for an existing descriptor. |
Method Summary | |
---|---|
AggregateObjectMapping |
addAggregateObjectMapping(java.lang.String name,
DynamicType refType,
boolean allowsNull)
Add a AggregateObjectMapping (Embeddable in JPA) to the
entityType being built or extended. |
DirectCollectionMapping |
addDirectCollectionMapping(java.lang.String name,
java.lang.String targetTable,
java.lang.String valueColumn,
java.lang.Class<?> valueType,
java.lang.String... fkFieldNames)
Add a DirectCollectionMapping to the entityType being
built or extended. |
DirectToFieldMapping |
addDirectMapping(java.lang.String name,
java.lang.Class<?> javaType,
java.lang.String fieldName)
Allows DirectToFieldMapping (@Basic) mapping to be added to a
dynamic type through API. |
protected AbstractDirectMapping |
addDirectMappingForEnum(java.lang.String fieldName,
java.lang.String className,
java.lang.String columnName)
|
protected void |
addDynamicClasses(DynamicClassLoader dcl,
java.lang.String className,
DynamicType parentType)
Register a DynamicClassWriter with the provided
DynamicClassLoader so that a dynamic class can be generated when
needed. |
DynamicEnumBuilder |
addEnum(java.lang.String fieldName,
java.lang.String className,
java.lang.String columnName,
DynamicClassLoader dcl)
|
void |
addManyToManyMapping(java.lang.String name,
DynamicType refType,
java.lang.String relationshipTableName)
Add a ManyToManyMapping to the entityType being built or
extended. |
DatabaseMapping |
addMapping(DatabaseMapping mapping)
Add the mapping to the entityType 's descriptor being built or
extended. |
OneToManyMapping |
addOneToManyMapping(java.lang.String name,
DynamicType refType,
java.lang.String... fkFieldNames)
Add a OneToManyMapping to the entityType being built or
extended. |
OneToOneMapping |
addOneToOneMapping(java.lang.String name,
DynamicType refType,
java.lang.String... fkFieldNames)
Allows OneToOneMapping (@OneToOne and @ManyToOne) mappings to be
added to a dynamic type through API. |
protected void |
configure(ClassDescriptor descriptor,
java.lang.String... tableNames)
Initialize a new or existing descriptor configuring the necessary policies as well as |
void |
configureSequencing(Sequence sequence,
java.lang.String numberName,
java.lang.String numberFieldName)
Configure sequencing specifying the sequence type to use. |
void |
configureSequencing(java.lang.String numberName,
java.lang.String numberFieldName)
Configure default sequencing. |
DynamicType |
getType()
|
static Project |
loadDynamicProject(java.io.InputStream resourceStream,
DatabaseLogin login,
DynamicClassLoader dynamicClassLoader)
Load a dynamic project from deployment XML creating dynamic types for all descriptors where the provided class name does not exist. |
static Project |
loadDynamicProject(Project project,
DatabaseLogin login,
DynamicClassLoader dynamicClassLoader)
|
static Project |
loadDynamicProject(java.lang.String resourcePath,
DatabaseLogin login,
DynamicClassLoader dynamicClassLoader)
Load a dynamic project from deployment XML creating dynamic types for all descriptors where the provided class name does not exist. |
void |
setPrimaryKeyFields(java.lang.String... pkFieldNames)
Set the PK field names on the underlying descriptor ensuring no duplicate names are added. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected org.eclipse.persistence.internal.dynamic.DynamicTypeImpl entityType
Constructor Detail |
---|
public DynamicTypeBuilder(java.lang.Class<?> dynamicClass, DynamicType parentType, java.lang.String... tableNames)
Creating new type Example:
DynamicHelper helper = new DynamicHelper(session);
DynamicClassLoader dcl = helper.getDynamicClassLoader();
Class> javaType = dcl.creatDynamicClass("model.Simple");
DynamicTypeBuilder typeBuilder = new JPADynamicTypeBuilder(javaType, null, "SIMPLE_TYPE");
typeBuilder.setPrimaryKeyFields("SID");
typeBuilder.addDirectMapping("id", int.class, "SID");
typeBuilder.addDirectMapping("value1", String.class, "VAL_1");
typeBuilder.addDirectMapping("value2", boolean.class, "VAL_2");
typeBuilder.addDirectMapping("value3", Calendar.class, "VAL_3");
typeBuilder.addDirectMapping("value4", Character.class, "VAL_4");
helper.addTypes(true, true, typeBuilder.getType());
dynamicClass
- parentType
- tableNames
- public DynamicTypeBuilder(DynamicClassLoader dcl, ClassDescriptor descriptor, DynamicType parentType)
dcl
- descriptor
- parentType
- provided since the InheritancePolicy on the descriptor may not
have its parent descriptor initialized.Method Detail |
---|
protected void addDynamicClasses(DynamicClassLoader dcl, java.lang.String className, DynamicType parentType)
DynamicClassWriter
with the provided
DynamicClassLoader
so that a dynamic class can be generated when
needed.
protected void configure(ClassDescriptor descriptor, java.lang.String... tableNames)
public DynamicType getType()
public void setPrimaryKeyFields(java.lang.String... pkFieldNames)
pkFieldNames
- qualified or unqualified field namespublic DirectToFieldMapping addDirectMapping(java.lang.String name, java.lang.Class<?> javaType, java.lang.String fieldName)
DirectToFieldMapping
(@Basic) mapping to be added to a
dynamic type through API. This method can be used on a new
DynamicTypeImpl
that has yet to be added to a session and have
its descriptor initialized, or it can be called on an active
(initialized) descriptor.
There is no support currently for having the EclipseLink
SchemaManager
generate ALTER TABLE calls so any new columns
expected must be added without the help of EclipseLink or use the
SchemaManager.replaceObject(org.eclipse.persistence.tools.schemaframework.DatabaseObjectDefinition)
to DROP and CREATE the table. WARNING: This will cause data loss.
javaType
- is the type of the attribute. If the type is a primitive it
will be converted to the comparable non-primitive type.public OneToOneMapping addOneToOneMapping(java.lang.String name, DynamicType refType, java.lang.String... fkFieldNames)
OneToOneMapping
(@OneToOne and @ManyToOne) mappings to be
added to a dynamic type through API. This method can be used on a new
DynamicTypeImpl
that has yet to be added to a session and have
its descriptor initialized, or it can be called on an active
(initialized) descriptor.
There is no support currently for having the EclipseLink
SchemaManager
generate ALTER TABLE calls so any new columns
expected must be added without the help of EclipseLink or use the
SchemaManager.replaceObject(org.eclipse.persistence.tools.schemaframework.DatabaseObjectDefinition)
to DROP and CREATE the table. WARNING: This will cause data loss.
public OneToManyMapping addOneToManyMapping(java.lang.String name, DynamicType refType, java.lang.String... fkFieldNames)
OneToManyMapping
to the entityType
being built or
extended. This mapping is created using standard foreign keys from the
source table(s) to the target table(s) and transparent indirection (
IndirectList
).
name
- attribute name to use in the dynamic entity. Also the property
name used to access the state of the entityrefType
- fkFieldNames
- the FK field names specified in the same order to match the PK
field names of the target class
public DirectCollectionMapping addDirectCollectionMapping(java.lang.String name, java.lang.String targetTable, java.lang.String valueColumn, java.lang.Class<?> valueType, java.lang.String... fkFieldNames) throws java.lang.IllegalArgumentException
DirectCollectionMapping
to the entityType
being
built or extended. This mapping is created using standard foreign keys
from the target table(s) to the source table(s) and transparent
indirection ( IndirectList
).
name
- attribute name to use in the dynamic entity. Also the property
name used to access the state of the entitytargetTable
- name of table holding the direct valuesvalueColumn
- name of column in target table holding the direct value for
the collectionvalueType
- the type of the attribute assumed to be a known basic typefkFieldNames
- the FK field names on the source table specified in order to
match the PK field names on the source.
java.lang.IllegalArgumentException
public AggregateObjectMapping addAggregateObjectMapping(java.lang.String name, DynamicType refType, boolean allowsNull)
AggregateObjectMapping
(Embeddable
in JPA) to the
entityType
being built or extended.
name
- attribute name to use in the dynamic entity. Also the property
name used to access the state of the entityrefType
- dynamic type re[presenting the Embeddable/AggregateObjectallowsNull
- true indicates that the attribute can be null if all values
are null.
public void addManyToManyMapping(java.lang.String name, DynamicType refType, java.lang.String relationshipTableName)
ManyToManyMapping
to the entityType
being built or
extended. This method assumes that the columns names on the relationship
table match the PK columns names they relate to. In the case of the
target keys from the relationship table a '_' will be appended to the
column names if they collide with the names from the source table.
name
- attribute name to use in the dynamic entity. Also the property
name used to access the state of the entityrefType
- target dynamic entityrelationshipTableName
- public DatabaseMapping addMapping(DatabaseMapping mapping)
entityType
's descriptor being built or
extended. This is where the ValuesAccessor
is created and the
position of the mapping in the descriptor is captured to use as its
index.
public void configureSequencing(java.lang.String numberName, java.lang.String numberFieldName)
public void configureSequencing(Sequence sequence, java.lang.String numberName, java.lang.String numberFieldName)
public DynamicEnumBuilder addEnum(java.lang.String fieldName, java.lang.String className, java.lang.String columnName, DynamicClassLoader dcl)
protected AbstractDirectMapping addDirectMappingForEnum(java.lang.String fieldName, java.lang.String className, java.lang.String columnName)
public static Project loadDynamicProject(java.lang.String resourcePath, DatabaseLogin login, DynamicClassLoader dynamicClassLoader) throws java.io.IOException
resourcePath
- login
- dynamicClassLoader
-
DynamicClassLoader
and associated
DynamicClassWriter
configured. Ensure if a new
Login/Platform is being configured that the
ConversionManager.getLoader()
is maintained.
null is returned if the resourcePath cannot locate a deployment XML
java.io.IOException
public static Project loadDynamicProject(java.io.InputStream resourceStream, DatabaseLogin login, DynamicClassLoader dynamicClassLoader) throws java.io.IOException
resourceStream
- login
- dynamicClassLoader
-
DynamicClassLoader
and associated
DynamicClassWriter
configured. Ensure if a new
Login/Platform is being configured that the
ConversionManager.getLoader()
is maintained.
null is returned if the resourcePath cannot locate a deployment XML
java.io.IOException
public static Project loadDynamicProject(Project project, DatabaseLogin login, DynamicClassLoader dynamicClassLoader)
|
EclipseLink 2.4.2, build 'v20130514-5956486' API Reference | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |