Top Description Methods
org.hibernate.loader.ast.spi

public Interface MultiKeyLoadSizingStrategy

Annotations
@FunctionalInterface
Imports
org.hibernate.dialect.Dialect

Strategy for determining an optimal size for loading by multiple keys. The optimal size is defined as the most appropriate number of key values to load in any single SQL query.

API Note

This is used with IN-list style loading to determine the number of keys to encode into the SQL restriction to make sure we do not exceed database/driver limits on the number of JDBC parameters. Generally, prefer using a SQL ARRAY parameter for the keys instead if the database/driver supports it.

Author
Steve Ebersole
See Also
Dialect#getMultiKeyLoadSizingStrategy(), org.hibernate.annotations.BatchSize, org.hibernate.Session#byMultipleIds, org.hibernate.Session#byMultipleNaturalId

Method Summary

Modifier and TypeMethod and Description
public int

Returns:

The number of keys to load at once. The total number of JDBC parameters needed for that load is defined by numberOfKeys * numberOfKeyColumns. The strategy should take care to ensure that numberOfKeys * numberOfKeyColumns does not exceed any database/driver limits on the number of parameters allowed in a java.sql.PreparedStatement.
determineOptimalBatchLoadSize
(int
The number of columns to which the key is mapped
numberOfKeyColumns
,
int
The total number of keys we need to load
numberOfKeys
,
boolean inClauseParameterPaddingEnabled)

Determine the optimal batch size (number of key values) to load at a time.

Method Detail

determineOptimalBatchLoadSizeback to summary
public int determineOptimalBatchLoadSize(int numberOfKeyColumns, int numberOfKeys, boolean inClauseParameterPaddingEnabled)

Determine the optimal batch size (number of key values) to load at a time.

The return can be less than the total numberOfKeys to be loaded indicating that the load should be split across multiple SQL queries. E.g. if we are loading 7 keys and the strategy says the optimal size is 5, we will perform 2 queries.

API Note

Parameters
numberOfKeyColumns:int

The number of columns to which the key is mapped

numberOfKeys:int

The total number of keys we need to load

inClauseParameterPaddingEnabled:boolean

See org.hibernate.cfg.AvailableSettings#IN_CLAUSE_PARAMETER_PADDING

Returns:int

The number of keys to load at once. The total number of JDBC parameters needed for that load is defined by numberOfKeys * numberOfKeyColumns. The strategy should take care to ensure that numberOfKeys * numberOfKeyColumns does not exceed any database/driver limits on the number of parameters allowed in a java.sql.PreparedStatement.