Class SchemaPerMultitenantPolicy
- java.lang.Object
-
- org.eclipse.persistence.descriptors.TablePerMultitenantPolicy
-
- org.eclipse.persistence.descriptors.SchemaPerMultitenantPolicy
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,MultitenantPolicy
public class SchemaPerMultitenantPolicy extends TablePerMultitenantPolicy
A schema per tenant multitenant policy. This is a special case of TablePerMultitenantPolicy which can be applied on the project. Can be useful in cases when tenant schema change happens outside of EclipseLink, typically if Proxy DataSource is used. Use of this policy is limited to projects where following applies- @Multitenant entities are not used
- EMF is shared across tenants
- EMF shared cache is disabled
- no @Entity defines schema to be used
- See Also:
- Serialized Form
- Author:
- Lukas Jungmann
- Since:
- EclipseLink 2.6
-
-
Field Summary
-
Fields inherited from class org.eclipse.persistence.descriptors.TablePerMultitenantPolicy
contextProperty, contextTenant, descriptor, tablePerTenantTables, type
-
-
Constructor Summary
Constructors Constructor Description SchemaPerMultitenantPolicy()SchemaPerMultitenantPolicy(ClassDescriptor desc)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MultitenantPolicyclone(ClassDescriptor descriptor)INTERNAL: Multitenant policies are cloned per inheritance subclass.org.eclipse.persistence.internal.helper.DatabaseTablegetTable(java.lang.String tableName)INTERNAL: Return the new database table associated with this tenant.org.eclipse.persistence.internal.helper.DatabaseTablegetTable(org.eclipse.persistence.internal.helper.DatabaseTable table)INTERNAL: Return the new database table associated with this tenant.protected java.lang.StringgetTableName(org.eclipse.persistence.internal.helper.DatabaseTable table, java.lang.String tenant)INTERNAL: Return the tenant table name.voidinitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL:booleanisSchemaPerMultitenantPolicy()INTERNAL:booleanisTablePerMultitenantPolicy()INTERNAL:voidsetShouldUseSharedCache(boolean shouldUseSharedCache)voidsetShouldUseSharedEMF(boolean shouldUseSharedEMF)protected voidsetTableSchemaPerTenant()INTERNAL: This method is used to update the table per tenant descriptor with a table per tenant schema.booleanshouldUseSharedCache()booleanshouldUseSharedEMF()protected org.eclipse.persistence.internal.helper.DatabaseTableupdateTable(org.eclipse.persistence.internal.helper.DatabaseTable table)INTERNAL: This method will update the table by cloning it and setting a new name on it.-
Methods inherited from class org.eclipse.persistence.descriptors.TablePerMultitenantPolicy
addFieldsToRow, addToTableDefinition, getContextProperty, hasContextTenant, isPrefixPerTable, isSchemaPerTable, isSingleTableMultitenantPolicy, isSuffixPerTable, postInitialize, preInitialize, setContextProperty, setContextTenant, setTablePerTenant, setTenantTableDiscriminatorType, shouldInitialize, usesContextProperty
-
-
-
-
Constructor Detail
-
SchemaPerMultitenantPolicy
public SchemaPerMultitenantPolicy()
-
SchemaPerMultitenantPolicy
public SchemaPerMultitenantPolicy(ClassDescriptor desc)
-
-
Method Detail
-
initialize
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorExceptionINTERNAL:- Specified by:
initializein interfaceMultitenantPolicy- Overrides:
initializein classTablePerMultitenantPolicy- Throws:
DescriptorException
-
clone
public MultitenantPolicy clone(ClassDescriptor descriptor)
Description copied from class:TablePerMultitenantPolicyINTERNAL: Multitenant policies are cloned per inheritance subclass.- Specified by:
clonein interfaceMultitenantPolicy- Overrides:
clonein classTablePerMultitenantPolicy
-
isSchemaPerMultitenantPolicy
public boolean isSchemaPerMultitenantPolicy()
Description copied from class:TablePerMultitenantPolicyINTERNAL:- Specified by:
isSchemaPerMultitenantPolicyin interfaceMultitenantPolicy- Overrides:
isSchemaPerMultitenantPolicyin classTablePerMultitenantPolicy
-
setTableSchemaPerTenant
protected void setTableSchemaPerTenant()
Description copied from class:TablePerMultitenantPolicyINTERNAL: This method is used to update the table per tenant descriptor with a table per tenant schema. This includes any relation tables from mappings. This will be done through the setting of a table qualifier on the tables. This method should only be called at the start of a client session lifecycle and should only be called once.- Overrides:
setTableSchemaPerTenantin classTablePerMultitenantPolicy
-
isTablePerMultitenantPolicy
public boolean isTablePerMultitenantPolicy()
Description copied from class:TablePerMultitenantPolicyINTERNAL:- Specified by:
isTablePerMultitenantPolicyin interfaceMultitenantPolicy- Overrides:
isTablePerMultitenantPolicyin classTablePerMultitenantPolicy
-
getTableName
protected java.lang.String getTableName(org.eclipse.persistence.internal.helper.DatabaseTable table, java.lang.String tenant)Description copied from class:TablePerMultitenantPolicyINTERNAL: Return the tenant table name.- Overrides:
getTableNamein classTablePerMultitenantPolicy
-
getTable
public org.eclipse.persistence.internal.helper.DatabaseTable getTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
Description copied from class:TablePerMultitenantPolicyINTERNAL: Return the new database table associated with this tenant.- Overrides:
getTablein classTablePerMultitenantPolicy
-
getTable
public org.eclipse.persistence.internal.helper.DatabaseTable getTable(java.lang.String tableName)
Description copied from class:TablePerMultitenantPolicyINTERNAL: Return the new database table associated with this tenant.- Overrides:
getTablein classTablePerMultitenantPolicy
-
updateTable
protected org.eclipse.persistence.internal.helper.DatabaseTable updateTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
Description copied from class:TablePerMultitenantPolicyINTERNAL: This method will update the table by cloning it and setting a new name on it. The table association will be stored here as well for ease of future look up.- Overrides:
updateTablein classTablePerMultitenantPolicy
-
shouldUseSharedEMF
public boolean shouldUseSharedEMF()
-
setShouldUseSharedEMF
public void setShouldUseSharedEMF(boolean shouldUseSharedEMF)
-
shouldUseSharedCache
public boolean shouldUseSharedCache()
-
setShouldUseSharedCache
public void setShouldUseSharedCache(boolean shouldUseSharedCache)
-
-