Annotation Type HashPartitioning


  • @Target({TYPE,METHOD,FIELD})
    @Retention(RUNTIME)
    public @interface HashPartitioning
    HashPartitioning partitions access to a database cluster by the hash of a field value from the object, such as the object's location, or tenant. The hash indexes into the list of connection pools. All write or read request for object's with that hash 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.

    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:
    Partitioned, HashPartitioningPolicy
    Author:
    James Sutherland
    Since:
    EclipseLink 2.2
    • Required Element Summary

      Required Elements 
      Modifier and Type Required Element Description
      java.lang.String name
      The name of the partition policy, names must be unique for the persistence unit.
      Column partitionColumn
      The database column or query parameter to partition queries by.
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.String[] connectionPools
      List of connection pool names to partition across.
      boolean unionUnpartitionableQueries
      Defines if queries that do not contain the partition field should be sent to every database and have the result unioned.
    • Element Detail

      • name

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

        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.
      • connectionPools

        java.lang.String[] connectionPools
        List of connection pool names to partition across. Defaults to all defined pools in the ServerSession.
        Default:
        {}
      • 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