Enum FetchMode
- java.lang.Object
-
- java.lang.Enum<FetchMode>
-
- org.hibernate.annotations.FetchMode
-
- All Implemented Interfaces:
Serializable
,Comparable<FetchMode>
public enum FetchMode extends Enum<FetchMode>
Enumerates strategies for fetching an association from the database.The JPA-defined
FetchType
enumerates the possibilities for when an association might be fetched. This annotation defines how it is fetched in terms of the actual SQL executed by the database.- See Also:
Fetch
,FetchProfile.FetchOverride.mode()
-
-
Enum Constant Summary
Enum Constants Enum Constant Description JOIN
Use an outer join to load all instances of the related entity or collection at once, as part of the execution of a query.SELECT
Use a secondary select to load a single associated entity or collection, at some point after an initial query is executed.SUBSELECT
Use a secondary select with a subselect that re-executes an initial query to load all instances of the related entity or collection at once, at some point after the initial query is executed.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description FetchMode
getHibernateFetchMode()
static FetchMode
valueOf(String name)
Returns the enum constant of this type with the specified name.static FetchMode[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
SELECT
public static final FetchMode SELECT
Use a secondary select to load a single associated entity or collection, at some point after an initial query is executed.This is the default fetching strategy for any association or collection in Hibernate, unless the association or collection is explicitly marked for eager fetching.
This fetching strategy is vulnerable to the "N+1 selects" bugbear, though the impact may be alleviated somewhat via:
- enabling batch fetching using
BatchSize
, or - ensuring that the associated entity or collection may be retrieved from the second-level cache.
This fetching strategy is, in principle, compatible with both eager and lazy fetching. On the other hand, performance considerations dictate that it should only be used in combination wih
EAGER
fetching when it is almost certain that the associated data will be available in the second-level cache. - enabling batch fetching using
-
JOIN
public static final FetchMode JOIN
Use an outer join to load all instances of the related entity or collection at once, as part of the execution of a query. No subsequent queries are executed.This is the default fetching strategy for an association or collection that is explicitly marked for eager fetching.
This fetching strategy is incompatible with lazy fetching since the associated data is retrieved as part of the initial query.
-
SUBSELECT
public static final FetchMode SUBSELECT
Use a secondary select with a subselect that re-executes an initial query to load all instances of the related entity or collection at once, at some point after the initial query is executed. This fetching strategy is currently only available for collections and many-valued associations.This advanced fetching strategy is compatible with both eager and lazy fetching.
Subselect fetching may be contrasted with batch fetching:
- In batch fetching, a list of primary key values is sent to
the database, bound within a SQL
in
condition. - In subselect fetching, the primary keys are determined by re-execution of the initial query within a SQL subselect.
- In batch fetching, a list of primary key values is sent to
the database, bound within a SQL
-
-
Method Detail
-
values
public static FetchMode[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (FetchMode c : FetchMode.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static FetchMode valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is null
-
getHibernateFetchMode
public FetchMode getHibernateFetchMode()
-
-