Package io.ebean

Class FetchConfig

java.lang.Object
io.ebean.FetchConfig
All Implemented Interfaces:
Serializable

public class FetchConfig
extends Object
implements Serializable
Defines how a relationship is fetched via either normal SQL join, a eager secondary query, via lazy loading or via eagerly hitting L2 cache.


 // Normal fetch join results in a single SQL query
 List<Order> list = DB.find(Order.class).fetch("details").findList();

 

Example: Using a "query join" instead of a "fetch join" we instead use 2 SQL queries



 // This will use 2 SQL queries to build this object graph
 List<Order> list =
     DB.find(Order.class)
         .fetch("details", FetchConfig.ofQuery())
         .findList();

 // query 1) find order
 // query 2) find orderDetails where order.id in (?,?...) // first 100 order id's

 
Author:
mario, rbygrave
See Also:
Serialized Form
  • Constructor Details

    • FetchConfig

      Deprecated.
      Deprecated - migrate to one of the static factory methods like ofQuery()

      Construct using default JOIN mode.

  • Method Details

    • ofCache

      public static FetchConfig ofCache()
      Return FetchConfig to eagerly fetch the relationship using L2 cache.

      Any cache misses will be loaded by secondary query to the database.

    • ofQuery

      public static FetchConfig ofQuery()
      Return FetchConfig to eagerly fetch the relationship using a secondary query.
    • ofQuery

      public static FetchConfig ofQuery​(int batchSize)
      Return FetchConfig to eagerly fetch the relationship using a secondary with a given batch size.
    • ofLazy

      public static FetchConfig ofLazy()
      Return FetchConfig to lazily load the relationship.
    • ofLazy

      public static FetchConfig ofLazy​(int batchSize)
      Return FetchConfig to lazily load the relationship specifying the batch size.
    • ofDefault

      public static FetchConfig ofDefault()
      Return FetchConfig to fetch the relationship using SQL join.
    • lazy

      Deprecated.
      Deprecated - migrate to FetchConfig.ofLazy().
    • lazy

      @Deprecated public FetchConfig lazy​(int batchSize)
      Deprecated.
      Deprecated - migrate to FetchConfig.ofLazy(batchSize).
    • query

      Deprecated.
      Deprecated - migrate to FetchConfig.ofQuery().

      Eagerly fetch the beans in this path as a separate query (rather than as part of the main query).

      This will use the default batch size for separate query which is 100.

    • query

      @Deprecated public FetchConfig query​(int batchSize)
      Deprecated.
      Deprecated - migrate to FetchConfig.ofQuery(batchSize).

      Eagerly fetch the beans in this path as a separate query (rather than as part of the main query).

      The queryBatchSize is the number of parent id's that this separate query will load per batch.

      This will load all beans on this path eagerly unless a lazy(int) is also used.

      Parameters:
      batchSize - the batch size used to load beans on this path
    • queryFirst

      @Deprecated public FetchConfig queryFirst​(int batchSize)
      Deprecated.
      Deprecated - migrate to FetchConfig.ofQuery(batchSize).

      Eagerly fetch the first batch of beans on this path. This is similar to query(int) but only fetches the first batch.

      If there are more parent beans than the batch size then they will not be loaded eagerly but instead use lazy loading.

      Parameters:
      batchSize - the number of parent beans this path is populated for
    • cache

      Deprecated.
      Deprecated - migrate to FetchConfig.ofCache().

      Eagerly fetch the beans fetching the beans from the L2 bean cache and using the DB for beans not in the cache.

    • getBatchSize

      public int getBatchSize()
      Return the batch size for fetching.
    • isCache

      public boolean isCache()
      Return true if the fetch should use the L2 cache.
    • isQuery

      public boolean isQuery()
      Return true if the fetch should be a eager secondary query.
    • isLazy

      public boolean isLazy()
      Return true if the fetch should be a lazy query.
    • isJoin

      public boolean isJoin()
      Return true if the fetch should try to use SQL join.
    • equals

      public boolean equals​(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object