Class RangePartitioningPolicy
- java.lang.Object
-
- org.eclipse.persistence.descriptors.partitioning.PartitioningPolicy
-
- org.eclipse.persistence.descriptors.partitioning.FieldPartitioningPolicy
-
- org.eclipse.persistence.descriptors.partitioning.RangePartitioningPolicy
-
- All Implemented Interfaces:
java.io.Serializable
public class RangePartitioningPolicy extends FieldPartitioningPolicy
PUBLIC: RangePartitioningPolicy partitions access to a database cluster by a field value from the object, such as the object's id, location, or tenant. Each server is assigned a range of values. All write or read request for object's with that value are sent to the server. If a query does not include the field as a parameter, then it can either be sent to all server's and unioned, or left to the sesion's default behavior.- See Also:
- Serialized Form
- Author:
- James Sutherland
- Since:
- EclipseLink 2.2
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<RangePartition>
partitions
-
Fields inherited from class org.eclipse.persistence.descriptors.partitioning.FieldPartitioningPolicy
partitionField, unionUnpartitionableQueries
-
Fields inherited from class org.eclipse.persistence.descriptors.partitioning.PartitioningPolicy
name
-
-
Constructor Summary
Constructors Constructor Description RangePartitioningPolicy()
RangePartitioningPolicy(java.lang.String partitionField)
RangePartitioningPolicy(java.lang.String partitionField, boolean unionUnpartitionableQueries)
RangePartitioningPolicy(java.lang.String partitionField, RangePartition... partitions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addPartition(java.lang.String connectionPool, java.lang.Comparable startValue, java.lang.Comparable endValue)
PUBLIC: Add the range partition.void
addPartition(RangePartition partition)
PUBLIC: Add the range partition.void
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings to actual class-based settings.java.util.List<org.eclipse.persistence.internal.databaseaccess.Accessor>
getConnectionsForQuery(org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord arguments)
INTERNAL: Get a connection from one of the pools in a round robin rotation fashion.java.util.List<RangePartition>
getPartitions()
PUBLIC: Return the range partitions.void
partitionPersist(org.eclipse.persistence.internal.sessions.AbstractSession session, java.lang.Object object, ClassDescriptor descriptor)
INTERNAL: Allow for the persist call to assign the partition.void
setPartitions(java.util.List<RangePartition> partitions)
PUBLIC: Set the range partitions.-
Methods inherited from class org.eclipse.persistence.descriptors.partitioning.FieldPartitioningPolicy
extractPartitionValueForPersist, getPartitionField, getPartitionFieldName, getUnionUnpartitionableQueries, setPartitionField, setPartitionField, setUnionUnpartitionableQueries
-
Methods inherited from class org.eclipse.persistence.descriptors.partitioning.PartitioningPolicy
acquireAccessor, getAccessor, getName, initialize, setName
-
-
-
-
Field Detail
-
partitions
protected java.util.List<RangePartition> partitions
-
-
Constructor Detail
-
RangePartitioningPolicy
public RangePartitioningPolicy()
-
RangePartitioningPolicy
public RangePartitioningPolicy(java.lang.String partitionField)
-
RangePartitioningPolicy
public RangePartitioningPolicy(java.lang.String partitionField, boolean unionUnpartitionableQueries)
-
RangePartitioningPolicy
public RangePartitioningPolicy(java.lang.String partitionField, RangePartition... partitions)
-
-
Method Detail
-
convertClassNamesToClasses
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings to actual class-based settings. This method is used when converting a project that has been built with class names to a project with classes.- Overrides:
convertClassNamesToClasses
in classPartitioningPolicy
-
getPartitions
public java.util.List<RangePartition> getPartitions()
PUBLIC: Return the range partitions. Each partition represents a range of value to route to a connection pool. Range values should not overlap.
-
setPartitions
public void setPartitions(java.util.List<RangePartition> partitions)
PUBLIC: Set the range partitions. Each partition represents a range of value to route to a connection pool. Range values should not overlap.
-
addPartition
public void addPartition(java.lang.String connectionPool, java.lang.Comparable startValue, java.lang.Comparable endValue)
PUBLIC: Add the range partition.
-
addPartition
public void addPartition(RangePartition partition)
PUBLIC: Add the range partition.
-
getConnectionsForQuery
public java.util.List<org.eclipse.persistence.internal.databaseaccess.Accessor> getConnectionsForQuery(org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord arguments)
INTERNAL: Get a connection from one of the pools in a round robin rotation fashion.- Specified by:
getConnectionsForQuery
in classPartitioningPolicy
-
partitionPersist
public void partitionPersist(org.eclipse.persistence.internal.sessions.AbstractSession session, java.lang.Object object, ClassDescriptor descriptor)
INTERNAL: Allow for the persist call to assign the partition.- Overrides:
partitionPersist
in classPartitioningPolicy
-
-