Class ValuePartitioningPolicy

All Implemented Interfaces:
Serializable

public class ValuePartitioningPolicy extends FieldPartitioningPolicy
PUBLIC: ValuePartitioningPolicy partitions access to a database cluster by a field value from the object, such as the object's location, or tenant. Each value is assigned a specific server. 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:
Author:
James Sutherland
  • Field Details

    • partitions

      protected Map<Object,String> partitions
      Store the value partitions. Each partition maps a value to a connectionPool.
    • partitionNames

      protected Map<String,String> partitionNames
      Store the value partitions by name. Initialized at runtime.
    • partitionValueTypeName

      protected String partitionValueTypeName
      The type name of the partition value names. Initialized at runtime
    • partitionValueType

      protected Class partitionValueType
      The type of the partition values. Initialized from the type name at runtime.
    • orderedPartitions

      protected List<String> orderedPartitions
      Use to track order for compute UCP index.
    • defaultConnectionPool

      protected String defaultConnectionPool
      The default connection pool is used for any unmapped values.
  • Constructor Details

    • ValuePartitioningPolicy

      public ValuePartitioningPolicy()
    • ValuePartitioningPolicy

      public ValuePartitioningPolicy(String partitionField)
    • ValuePartitioningPolicy

      public ValuePartitioningPolicy(String partitionField, boolean unionUnpartitionableQueries)
  • Method Details

    • convertClassNamesToClasses

      public void convertClassNamesToClasses(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 class PartitioningPolicy
    • setPartitionValueTypeName

      public void setPartitionValueTypeName(String partitionValueTypeName)
      INTERNAL:
    • getOrderedPartitions

      public List<String> getOrderedPartitions()
    • setOrderedPartitions

      public void setOrderedPartitions(List<String> orderedPartitions)
    • getDefaultConnectionPool

      public String getDefaultConnectionPool()
      PUBLIC: Return the default connection pool used for any unmapped values.
    • setDefaultConnectionPool

      public void setDefaultConnectionPool(String defaultConnectionPool)
      PUBLIC: Set the default connection pool used for any unmapped values.
    • getPartitions

      public Map<Object,String> getPartitions()
      PUBLIC: Return the value partitions. Each partition maps a value to a connectionPool.
    • setPartitions

      public void setPartitions(Map<Object,String> partitions)
      PUBLIC: Set the value partitions. Each partition maps a value to a connectionPool.
    • addPartition

      public void addPartition(Object value, String connectionPool)
      PUBLIC: Add the value partition.
    • addPartitionName

      public void addPartitionName(String valueName, String connectionPool)
      INTERNAL: Add partition values by name (will be initialized at runtime with the real class loader).
    • getConnectionsForQuery

      public 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 class PartitioningPolicy
    • partitionPersist

      public void partitionPersist(org.eclipse.persistence.internal.sessions.AbstractSession session, Object object, ClassDescriptor descriptor)
      INTERNAL: Allow for the persist call to assign the partition.
      Overrides:
      partitionPersist in class PartitioningPolicy