Annotation Type RangePartitioning


@Target({TYPE,METHOD,FIELD}) @Retention(RUNTIME) public @interface RangePartitioning
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.

If multiple partitions are used to process a single transaction, JTA should be used for proper XA transaction support.

Partitioning can be enabled on an Entity, relationship, query, or session/persistence unit. Partition policies are globally named to allow reuse, the partitioning policy must also be set using the @Partitioned annotation to be used.

See Also:
Author:
James Sutherland
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    The name of the partition policy, names must be unique for the persistence unit.
    jakarta.persistence.Column
    The database column or query parameter to partition queries by.
    (Required) List of connection pool names to load balance across.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    The type of the start and end values.
    boolean
    Defines if queries that do not contain the partition field should be sent to every database and have the result unioned.
  • Element Details

    • name

      String name
      The name of the partition policy, names must be unique for the persistence unit.
    • partitionColumn

      jakarta.persistence.Column partitionColumn
      The database column or query parameter to partition queries by. This is the table column name, not the class attribute name. The column value must be included in the query and should normally be part of the object's Id. This can also be the name of a query parameter. If a query does not contain the field the query will not be partitioned.
    • partitions

      RangePartition[] partitions
      (Required) List of connection pool names to load balance across.
    • partitionValueType

      Class partitionValueType
      The type of the start and end values.
      Default:
      java.lang.String.class
    • unionUnpartitionableQueries

      boolean unionUnpartitionableQueries
      Defines if queries that do not contain the partition field should be sent to every database and have the result unioned.
      Default:
      false