Package org.hibernate

Interface MultiIdentifierLoadAccess<T>


public interface MultiIdentifierLoadAccess<T>
Loads multiple instances of a given entity type at once, by specifying a list of identifier values. This allows the entities to be fetched from the database in batches.

 var graph = session.createEntityGraph(Book.class);
 graph.addSubgraph(Book_.publisher);

 List<Book> books =
         session.byMultipleIds(Book.class)
             .withFetchGraph(graph)
             .withBatchSize(20)
             .multiLoad(bookIds);
 
See Also:
  • Method Details

    • with

      Specify the lock options to use when querying the database.
      Parameters:
      lockOptions - The lock options to use
      Returns:
      this, for method chaining
    • with

      Specify the CacheMode to use when obtaining an entity.
      Parameters:
      cacheMode - The CacheMode to use
      Returns:
      this, for method chaining
    • withReadOnly

      MultiIdentifierLoadAccess<T> withReadOnly(boolean readOnly)
      Specify whether the entities should be loaded in read-only mode.
      Since:
      7.0
      See Also:
    • withFetchGraph

      default MultiIdentifierLoadAccess<T> withFetchGraph(RootGraph<T> graph)
      Override the associations fetched by default by specifying the complete list of associations to be fetched as an entity graph.
      Since:
      6.3
    • withLoadGraph

      default MultiIdentifierLoadAccess<T> withLoadGraph(RootGraph<T> graph)
      Augment the associations fetched by default by specifying a list of additional associations to be fetched as an entity graph.
      Since:
      6.3
    • with

      @Deprecated(since="6.3") default MultiIdentifierLoadAccess<T> with(RootGraph<T> graph)
    • with

      Customize the associations fetched by specifying an entity graph, and how it should be interpreted.
    • enableFetchProfile

      MultiIdentifierLoadAccess<T> enableFetchProfile(String profileName)
      Customize the associations fetched by specifying a fetch profile that should be enabled during this operation.

      This allows the session-level fetch profiles to be temporarily overridden.

      Since:
      7.0
    • disableFetchProfile

      MultiIdentifierLoadAccess<T> disableFetchProfile(String profileName)
      Customize the associations fetched by specifying a fetch profile that should be disabled during this operation.

      This allows the session-level fetch profiles to be temporarily overridden.

      Since:
      7.0
    • withBatchSize

      MultiIdentifierLoadAccess<T> withBatchSize(int batchSize)
      Specify a batch size, that is, how many entities should be fetched in each request to the database.
      • By default, the batch sizing strategy is determined by the SQL dialect, but
      • if some batchSize>1 is specified as an argument to this method, then that batch size will be used.

      If an explicit batch size is set manually, care should be taken to not exceed the capabilities of the underlying database.

      The performance impact of setting a batch size depends on whether a SQL array may be used to pass the list of identifiers to the database:

      • for databases which support standard SQL arrays, a smaller batch size might be extremely inefficient compared to a very large batch size or no batching at all, but
      • on the other hand, for databases with no SQL array type, a large batch size results in long SQL statements with many JDBC parameters.

      A batch size is considered a hint.

      Parameters:
      batchSize - The batch size
      Returns:
      this, for method chaining
    • enableSessionCheck

      MultiIdentifierLoadAccess<T> enableSessionCheck(boolean enabled)
      Specifies whether the ids of managed entity instances already cached in the current persistence context should be excluded from the list of ids sent to the database.

      By default, all ids are included and sent to the database.

      Parameters:
      enabled - true if they should be excluded; false if they should be included.
      Returns:
      this, for method chaining
    • enableReturnOfDeletedEntities

      MultiIdentifierLoadAccess<T> enableReturnOfDeletedEntities(boolean enabled)
      Should multiLoad(K...) return entity instances that have been marked for removal in the current session, but not yet deleted in the database?

      By default, instances marked for removal are replaced by null in the returned list of entities when enableOrderedReturn(boolean) is used.

      Parameters:
      enabled - true if removed entities should be returned; false if they should be replaced by null values.
      Returns:
      this, for method chaining
    • enableOrderedReturn

      MultiIdentifierLoadAccess<T> enableOrderedReturn(boolean enabled)
      Should the returned list of entity instances be ordered, with the position of an entity instance determined by the position of its identifier in the list if ids passed to multiLoad(K...)?

      By default, the returned list is ordered and the positions of the entities correspond to the positions of their ids. In this case, the handling of entities marked for removal becomes important.

      Parameters:
      enabled - true if entity instances should be ordered; false if they may be returned in any order.
      Returns:
      this, for method chaining
    • multiLoad

      <K> List<T> multiLoad(K... ids)
      Retrieve the entities with the given identifiers.

      Note that the options enableReturnOfDeletedEntities(boolean) and enableOrderedReturn(boolean) affect the size and shape of the returned list of entity instances.

      Type Parameters:
      K - The identifier type
      Parameters:
      ids - The ids to load
      Returns:
      The persistent entities.
    • multiLoad

      <K> List<T> multiLoad(List<K> ids)
      Retrieve the entities with the given identifiers.

      Note that the options enableReturnOfDeletedEntities(boolean) and enableOrderedReturn(boolean) affect the size and shape of the returned list of entity instances.

      Type Parameters:
      K - The identifier type
      Parameters:
      ids - The ids to load
      Returns:
      The persistent entities.